亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Keras 自定義損失函數 huber

Keras 自定義損失函數 huber

眼眸繁星 2023-07-05 16:31:58
我使用 Keras 后端函數編寫了 huber loss,效果很好:def huber_loss(y_true, y_pred, clip_delta=1.0):    error = y_true - y_pred    cond  = K.abs(error) < clip_delta             squared_loss = 0.5 * K.square(error)    linear_loss  = clip_delta * (K.abs(error) - 0.5 * clip_delta)    return tf_where(cond, squared_loss, linear_loss)但我需要一個更復雜的損失函數:如果error <= A,使用squared_loss如果A <= error < B,使用線性損失如果error >= B,使用sqrt_loss我是這樣寫的:def best_loss(y_true, y_pred, A, B):    error = K.abs(y_true - y_pred)    cond  = error <= A    cond2 = tf_logical_and(A < error, error <= B)    squared_loss = 0.5 * K.square(error)    linear_loss  = A * (error - 0.5 * A)    sqrt_loss = A * np.sqrt(B) * K.sqrt(error) - 0.5 * A**2    return tf_where(cond, squared_loss, tf_where(cond2, linear_loss, sqrt_loss))但是不行,用這個損失函數的模型不收斂,有什么bug?
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

我喜歡通過使用像 Desmos 這樣的程序繪制自定義函數的圖形來調試它們。我使用您的實現繪制了 Huber 損失圖,它看起來應該是這樣的。

當我嘗試繪制第二個函數的圖表時,它看起來也像是一個有效的損失函數。唯一的問題是當 B 小于 A 時。如果 B 的值大于 A,那么損失函數應該不會有問題。如果這不是問題,那么您可以嘗試在目標和輸出之間切換減法,因為我不熟悉張量流如何處理微分,但順序會影響梯度的方向。


查看完整回答
反對 回復 2023-07-05
  • 1 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號