我正在处理一个5类的视频分类,并使用TimeDistributed CNN + RNN模型。训练数据集包含70个视频,每个类包含20个帧。验证数据集包含15个视频,每个类包含20个帧。测试数据集包含15个视频,每个类包含20个帧。我使用的批处理大小是64。所以,我总共处理了500个视频。我使用RmsProp优化器和分类cross_entropy损失编译了模型。
我已经用65 epochs.But训练了模型我注意到一个奇怪的事实,在第一个epoch.However时,验证精度比训练精度高,在剩下的时间段,曲线看起来非常令人满意。
我的模型是:
model = Sequential()
input_shape=(20, 128, 128, 3)
model.add(BatchNormalization(input_shape=(20, 128, 128, 3)))
model.add(TimeDistributed(Conv2D(32, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Conv2D(64, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(Conv2D(128, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(Conv2D(128, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Conv2D(256, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(256, activation='relu', return_sequences=False))
model.add((Dense(128,activation='relu')))
model.add(Dense(5, activation='softmax'))
谁能告诉我为什么在第一个时期验证准确率比训练准确率更高?
发布于 2020-07-13 06:39:27
我的猜测是,因为你只有5个类,通过猜测所有帧的一个将会给你20%的准确率。现在你有大约32%,所以稍微好一点。
我通常不看初始精度,因为模型真的很差。(实际上,从绘图中删除前N个时期(在本例中,可能是20/30),以更好地显示性能)。
在第一个时期之后检查混淆矩阵,你可能只会擅长几个类。
https://stackoverflow.com/questions/62870408
复制相似问题