如何在Keras的自定义损失函数中切片数组

时间:2019-05-13 14:39:51

标签: tensorflow keras loss-function

我正在喀拉拉邦设计一个用于分类任务的神经网络。我的标签是平面上的点,其位置(x,y)是已知的。我希望keras的损失函数取决于预测点与实际点之间的距离-预测越远,损失就越大。

我已经实现了这个自定义损失函数,该函数将目标之间的距离矩阵作为输入。但是,它在切片distance_matrix numpy数组时崩溃。

def custom_loss(distance_matrix):
    def loss(y_true, y_pred):
        return distance_matrix[tf.keras.backend.argmax(y_true, axis=-1),
                               tf.keras.backend.argmax(y_pred, axis=-1)]
    return loss

我的想法是将损失值设置为距离矩阵的[pred,true]元素,其中pred是预测类,因此预测类概率y_pred的argmax。

是否可以将张量tf.keras.backend.argmax(y_true, axis=-1)转换为numpy数组以启用切片,或者是否可以使用张量进行切片?

我尝试了这个线程的想法,但没有成功: How can I convert a tensor into a numpy array in TensorFlow?

0 个答案:

没有答案