【发布时间】:2021-02-03 03:07:45
【问题描述】:
我正在使用分类模型,但想编写我的自定义损失函数,仅当 softmax 值大于 0.75 时,才将三个类别中的两个类别的值视为 1。如果其他两个类别都为零,则将第三个类别的值设置为 1。
def custom_loss(y_true, y_pred):
y_pred[:,0][y_pred[:,0] > 0.75] = 1
y_pred[:,0][y_pred[:,0] < 0.75] = 0
y_pred[:,2][y_pred[:,2] > 0.75] = 1
y_pred[:,2][y_pred[:,2] < 0.75] = 0
y_pred[:,1] = 1 - y_pred[:,0] - y_pred[:,2]
squared_difference = tf.square(y_true - y_pred)
return tf.reduce_mean(squared_difference, axis=-1)
但是我得到了错误
y_pred[:,0][y_pred[:,0] > 0.75] = 1
TypeError: 'Tensor' object does not support item assignment
有没有办法使用 TensorFlow 函数实现相同的功能。
问候
【问题讨论】: