【问题标题】:Why is the training accuracy fluctuating?为什么训练准确率会波动?
【发布时间】: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


【解决方案1】:

你可以尝试一两件事来稳定训练:

  1. 您可以尝试 4、8、16、32、64 的不同批次大小。您可以生成不同的图。看看这个link。它会为每个批次大小生成迷你图。

  2. 您还可以更改学习率。您可以通过直接调用 keras 回调来应用学习率调度程序或在高原上减少 LR。或者,有 Cyclic LR 试图找出最佳学习率。 paperGithub

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2018-02-08
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多