【发布时间】:2020-03-13 04:24:47
【问题描述】:
我正在尝试在 Keras 中使用我自己的损失函数。 特别是,作为 y_pred 预测向量和 y_true 真实向量,我想要:
y_pred[i] = y_pred[i] if y_true[i] != 0
y_pred[i] = 0 if y_true[i] == 0
所以我尝试了以下方法:
def myloss(y_true, y_pred):
mask = K.not_equal(y_true, 0)
mask = K.cast(mask, dtype = 'float32')
loss_value = K.mean(K.square(mask*y_pred - y_true), axis = 1)
return loss_value
但我收到此错误:
TypeError:传递给参数“x”的值的 DataType bool 不在允许值列表中:bfloat16、float16、float32、float64、uint8、int8、uint16、int16、int32、int64、complex64、complex128
有人知道如何帮助我吗?
【问题讨论】:
-
标签的形状和数据类型是什么?
-
数据类型为float64,形状为(n, 30),其中n是我传递给网络的图片数量
-
你能发布完整的错误堆栈跟踪吗?因为这个损失函数不会导致任何错误。尽管您可能想查看此函数,因为它返回长度为 (n,) 的数组,而不是单个损失值。
-
您好 Vivek,非常感谢您的帮助。我正在尝试一种不同的方法,似乎它可以工作,所以也许最后我会添加解决方案。再次感谢
-
@Gianluca_27 你设法解决了这个问题吗?如果是的话,请您分享一下它的详细信息。
标签: python tensorflow keras loss-function