如何在Keras中实现Triplet Loss?

时间:2016-10-11 06:33:36

标签: python keras

我正在尝试实施Google的Facenet论文:

enter image description here

首先,是否可以使用Keras的Sequential API实现本文,还是应该使用Graph API?

在任何一种情况下,您能告诉我如何将自定义丢失函数tripletLoss传递给模型编译,以及如何收到anchor embeddingpositive embedding和{{ 1}}作为计算损失的参数?

另外,在model.fit()中应该是第二个参数Y,在这种情况下我没有...

1 个答案:

答案 0 :(得分:2)

This issue解释了如何在Keras中创建自定义目标(丢失):

def dummy_objective(y_true, y_pred):
    return 0.5  # your implem of tripletLoss here

model.compile(loss=dummy_objective, optimizer='adadelta')

关于y的{​​{1}}参数,因为你是最后处理它的人(目标函数的.fit()参数取自它),我会说你可以通过Keras管道传递任何你需要的东西。如果您真的不需要任何监督,也许可以通过维度检查来传递维度检查。

最后,关于如何实施此特定论文,在Keras doc中查找y_truetriplet并未返回任何内容。因此,您可能必须自己实施或找到拥有的人。