如何在Keras中实现三元组损失函数?

8

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

enter image description here

首先,使用Keras的Sequential API实现这篇论文是否可行,还是应该选择Graph API?

无论哪种情况,您能否告诉我如何将自定义损失函数tripletLoss传递给模型编译器,并如何接收anchor embeddingpositive embeddingnegative embedding作为参数来计算损失?

此外,在model.fit()中应该是什么第二个参数Y呢?在这种情况下我没有任何参数...


嗨!你能在Keras上实现Facenet吗?我正在做一个需要这个的项目,想知道你是否能够完成这个任务... - Rob
1个回答

2

这个问题解释了如何在Keras中创建自定义目标(损失):

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

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

关于 .fit() 方法中的 y 参数,由于您最终处理它(目标函数的 y_true 参数来自于它),因此我认为您可以传递您需要通过 Keras 管道进行拟合的任何内容。如果您真的不需要任何监督,则可以传递一个虚拟向量以通过尺寸检查。

最后,关于如何实现这篇论文,Keras 文档 中搜索 tripletfacenet 没有返回任何内容。因此,您可能需要自己实现或找到已经实现了的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接