簡體   English   中英

“val_loss”並沒有從 inf 得到改善,但損失很好地減少了

[英]"val_loss" didn't improved from inf, but loss decreases nicely

我正在使用自定義 function 訓練 Keras model,我之前已經成功測試過。 最近,我用一個新的數據集訓練它,我得到了一個奇怪的結果: model 訓練很好,但val_loss給出了nan 這是損失:

def Loss(y_true,y_pred):
    y_pred = relu(y_pred)
    z = k.maximum(y_true, y_pred)
    y_pred_negativo = Lambda(lambda x: -x)(y_pred)
    w = k.abs(add([y_true, y_pred_negativo])) 
    if k.sum(z) == 0:
        error = 0
    elif k.sum(y_true) == 0 and k.sum(z) != 0:
        error = 100
    elif k.sum(y_true) == 0 and k.sum(z) == 0:
        error = 0
    else:
        error = (k.sum(w)/k.sum(z))*100
    return error

我嘗試了很多事情:

  1. 查看了 NaN 的數據
  2. 標准化 - 打開和關閉
  3. 剪輯 - 打開和關閉
  4. 輟學 - 打開和關閉

有人告訴我可能是 CUDA 安裝的問題,但我不確定。

關於問題是什么或我如何診斷它的任何想法?

問題原來是除以零,但它發生的原因有點棘手。 正如你所看到的,上面的定義有一些條件,它們應該排除除零。 但是,它們是為處理 NumPy 對象而不是張量而編寫的,張量是由 Keras 方法傳遞的對象。 因此,它們從未發生過,並且經常發生除零。

為了修復它,我不得不根據 Keras 條件重寫損失 - 提醒,避免將純 Keras 與 tf.keras 混合 - 正如我在這里發布的那樣。 任何進一步的評論都非常受歡迎!

暫無
暫無

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

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