0
我需要一個自定義的加權MSE損失函數。我在keras.backend定義它自定義損失函數Keras Tensorflow
from keras import backend as K
def weighted_loss(y_true, y_pred):
return K.mean(K.square(y_pred - y_true) *
K.exp(-K.log(1.7) * (K.log(1. + K.exp((y_true - 3)/5))))
,axis=-1 )
但是,試運行返回
weighted_loss(1,2)
ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("Exp_37:0", shape=(), dtype=float32)'
或
weighted_loss(1.,2.)
ZeroDivisionError: integer division or modulo by zero
我不知道我的錯誤我做在這裏。
非常感謝您的回答。您的代碼成功評估weighted_loss函數。但是,當我嘗試使用這個weighted_loss作爲損失函數時,我得到一個找不到函數的錯誤。這是合理的假設,我的功能的表述是好的,只是Keras沒有閱讀我的功能? – axiom
這完全合理是的。我已經添加了一些關於如何添加和使用損失函數的信息,不必在Keras源文件中弄亂 – 5Ke
它完美地工作。非常感謝!但爲什麼我需要將損失函數包裝在另一個函數中?這我沒有做,因此代碼失敗了。我爲這個新手問題表示歉意。這恰好是我的第一個Python代碼。 – axiom