我正在尝试实现Google的Facenet论文:
首先,使用Keras的Sequential API实现这篇论文是否可行,还是应该选择Graph API?
无论哪种情况,您能否告诉我如何将自定义损失函数tripletLoss
传递给模型编译器,并如何接收anchor embedding
、positive embedding
和negative embedding
作为参数来计算损失?
此外,在model.fit()中应该是什么第二个参数Y呢?在这种情况下我没有任何参数...
我正在尝试实现Google的Facenet论文:
首先,使用Keras的Sequential API实现这篇论文是否可行,还是应该选择Graph API?
无论哪种情况,您能否告诉我如何将自定义损失函数tripletLoss
传递给模型编译器,并如何接收anchor embedding
、positive embedding
和negative embedding
作为参数来计算损失?
此外,在model.fit()中应该是什么第二个参数Y呢?在这种情况下我没有任何参数...
这个问题解释了如何在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 文档 中搜索 triplet
或 facenet
没有返回任何内容。因此,您可能需要自己实现或找到已经实现了的人。