簡體   English   中英

為什么 tf model 訓練期間的二元交叉熵損失與 sklearn 計算的不同?

[英]Why is the binary cross entropy loss during training of tf model different than that calculated by sklearn?

我正在使用tensorflow構建神經協同過濾推薦model,使用二元交叉熵作為損失function。要預測的標簽當然是二元的。

在訓練每個時期后,打印出損失 function。 我有一個 for 循環,逐個訓練 model 個時期,然后使用當前 state 處的 model 預測測試標簽,並使用 sci-kit 學習的 log_loss function 再次計算損失。

我注意到 tensorflow 計算的損失(由 loss 表示)始終高於 sklearn 計算的損失(由 train_loss 表示): 在此處輸入圖像描述

這是由於這兩個函數涉及的數學略有不同嗎?

在訓練循環中,Keras 測量整個時期的平均損失。 在那段時間里,model 被調整和改進,所以當一個 epoch 結束時,報告的損失是對當時損失的高估(假設 model 仍在學習)。 使用sklearn ,您只計算紀元結束時的損失,而 model 是在紀元結束時計算的。 如果 model 仍在學習, sklearn的損失會略低,因為它只看到在 epoch 期間調整過的 model。

暫無
暫無

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

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