【发布时间】:2020-09-20 14:29:40
【问题描述】:
我正在处理 5 个类别的视频分类,并在 Google Colab 平台中使用 TimeDistributed CNN 模型。训练数据集包含 80 个视频,每个视频包含 5 帧。验证数据集包含 20 个视频,每个视频包含 5 帧。我使用的批量大小是 64。所以,我总共处理了 100 个视频。我使用 Adam 优化器和分类 cross_entropy 损失编译了模型。
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'])
但是,在将该模型与数据集拟合后,训练准确率曲线波动如下:
谁能帮我理解这种波动背后的原因?
【问题讨论】:
-
你能测试一下以下的东西吗: - 随机洗牌训练集 - 重新选择训练/验证 对于小数据集,它可能对数据非常敏感,这就是为什么它值得在上面测试,跨度>
标签: python tensorflow machine-learning keras