簡體   English   中英

為什么我的驗證損失小於訓練損失?

[英]Why my validation loss is smaller than the training loss?

在訓練深度卷積自動編碼器時,我一直得到比驗證損失更高的訓練損失。 請注意,在我的訓練數據生成器中,我正在使用 Keras zoom_range 進行數據擴充。 如果我提高 [0.8-4]、[0.8,6] 等縮放范圍,訓練和驗證損失之間的差距會不斷增加。 是因為訓練損失是根據增強數據計算的嗎? 假設更多的增強會使模型更難預測(重建)輸入圖像。 還是我的訓練方法有問題? 我還附上了訓練命令的代碼片段。

訓練和驗證生成器的代碼

 checkpoint = ModelCheckpoint(model_save_dir, monitor='val_loss', save_best_only=False, mode='min') callbacks_list = [checkpoint] history = model.fit(train_generator, validation_data=val_generator, epochs=n_epochs, shuffle=True, callbacks=callbacks_list)
損失曲線和縮放范圍

隨着數據增強效果的增加,您的訓練損失似乎會增加,這基本上是因為模型學習數據增強過多的模式變得更加困難。
在我看來,數據增強的目標是對初始數據進行實際更改,以提高模型的穩健性,就像正則化技術一樣。

然而,驗證的損失保持不變,所以我認為學習階段的效率並沒有受到太大影響。 我將確保標簽的分布是同質的,並且來自 train/val 的數據是分層的。 我還將制作一個測試集(沒有任何數據增強,例如驗證集),以使比較更有價值。

暫無
暫無

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

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