我正在使用5类视频分类,并在Google Colab平台中使用TimeDistributed CNN模型。训练数据集包含80个视频,每个视频包含5帧。验证数据集包含20个视频,每个视频包含5帧。我使用的批量大小为64。因此,我总共要处理100个视频。我使用Adam优化器和分类交叉熵损失对模型进行了编译。
model = Sequential()
input_shape=(5, 128, 128, 3)
model.add(TimeDistributed(Conv2D(32, (3, 3), strides=(1, 1),
activation='relu', padding='same'), input_shape=input_shape))
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(BatchNormalization()))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Flatten()))
model.add(GRU(64, return_sequences=False))
model.add(BatchNormalization())
model.add((Dense(128, activation='relu')))
model.add(Dense(5, activation='softmax'))
from tensorflow.keras.optimizers import Adam
model.compile(loss='categorical_crossentropy',
optimizer=Adam(lr=0.0001),
metrics=['accuracy'])
但是,在将此模型与数据集拟合之后,训练精度曲线会像这样波动:
有人可以帮助我了解这种波动的原因吗?