傑里米
我正在使用 tensorflow 構建一個神經協同過濾推薦模型,使用二元交叉熵作為損失函數。要預測的標籤當然是二元的。
在訓練每個 epoch 時,會打印損失函數。我有一個 for 循環,它通過 epoch 訓練模型 epoch,然後使用該當前狀態的模型來預測測試標籤,並使用 sci-kit learn 的 log_loss 函數再次計算損失。
我注意到 tensorflow 計算的損失(由 loss: 顯示)始終高於 sklearn 計算的損失(由 train_loss 顯示:):
這是因為這兩個函數所涉及的數學略有不同嗎?
尼古拉斯·熱維斯
在訓練循環中,Keras 測量整個 epoch 的平均損失。在此期間,模型會進行調整和改進,因此當一個 epoch 結束時,報告的損失是對當時損失的高估(假設模型仍在學習)。使用sklearn
,您只計算 epoch 結束時的損失,模型與 epoch 結束時一樣。如果模型仍在學習,則損失sklearn
會略低,因為它只看到在 epoch 中調整過的模型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句