我正在使用分类模型,但想要编写自定义损失函数,仅当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函数实现相同的目标。
对
y_pred = y_pred.numpy()
可以。