簡體   English   中英

為什么訓練准確率會波動?

[英]Why is the training accuracy fluctuating?

我正在處理 5 個類的視頻分類,並在 Google Colab 平台中使用 TimeDistributed CNN model。 訓練數據集包含 80 個視頻,每個視頻包含 5 幀。 驗證數據集包含 20 個視頻,每個視頻包含 5 幀。 我使用的批量大小是 64。所以,我總共處理了 100 個視頻。 我使用 Adam 優化器和分類 cross_entropy 損失編譯了 model。

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'])

但是,在將這個 model 與數據集擬合后,訓練精度曲線波動如下:

這里使用了 50 個 epoch

誰能幫我理解這種波動背后的原因?

您可以嘗試一兩件事來穩定訓練:

  1. 您可以嘗試 4、8、16、32、64 的不同批次大小。您可以生成不同的圖。 看看這個鏈接 它將為每個批量大小生成迷你圖。

  2. 您還可以更改學習率。 您可以通過直接調用 keras 回調來應用學習率調度程序或在高原減少 LR。 或者,有 Cyclic LR 試圖找出最佳學習率。 Github

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM