替换张量流自定义损失函数中的预测元素



我正在使用分类模型,但想要编写自定义损失函数,仅当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()

可以。

最新更新