我正在 Keras 中实现一个三元组损失函数。一般来说,损失函数以预测值和真实值作为参数。但三元组损失不使用标签,仅使用输出。我尝试编写仅包含一个参数的函数:
def triplet_loss(y_pred):
margin = 1
return K.mean(K.square(y_pred[0]) - K.square(y_pred[1]) + margin)
Run Code Online (Sandbox Code Playgroud)
它失败了,说triplet_loss()需要 1 个参数,但给出了两个参数(在 中score_array = fn(y_true, y_pred)。当我编写带有两个参数的函数时y_true, y_pred,程序运行没有错误。为什么会这样?我应该用这两个参数来实现这个函数,尽管y_true不会被使用?这是正确的还是有其他方法可以做到这一点?
好吧......只是不要使用基本事实:
def triplet_loss(y_true,y_pred):
#all your code as it is.
Run Code Online (Sandbox Code Playgroud)
在没有真实数据的情况下训练网络的情况并不常见。当我们期望它学到一些东西时,往往有一个基本事实。如果不这样做,只需忽略它即可。
另外,如果y_true被忽略,您将传递给 fit 方法什么?只是一个虚拟数组?
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |