我想制作一个自定义MSE损失函数,该函数仅使用输出层中的一项。
我现在所拥有的是这个
def new_loss(y_true, y_pred):
index_pred = K.argmax(K.abs(y_pred), axis = -1)
pred = tf.gather(y_true, index_pred, axis = 1)
index_true = K.argmin(K.abs(y_true), axis = -1)
true = tf.gather(y_true, index_true, axis = 1)
return K.mean(K.sqrt(K.square(K.log(pred)-K.log(true))))
但是它给出了错误,
An operation has `None` for gradient.
我一直在寻找,找不到适合我的情况的任何东西。
我正在使用Keras和Tensorflow作为后端。
谢谢。
编辑:
我尝试过
def new_loss(y_true, y_pred):
index_pred = K.argmax(K.abs(y_pred), axis = -1)
pred = tf.gather(y_pred, index_pred, axis = 1)
index_true = K.argmin(K.abs(y_true), axis = -1)
true = tf.gather(y_true, index_true, axis = 1)
return K.mean(K.sqrt(K.square(K.log(pred)-K.log(true))))
它没有给出错误。因此问题不是K.argmax / K.argmin。