我正在喀拉拉邦设计一个用于分类任务的神经网络。我的标签是平面上的点,其位置(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?