2016-10-11 59 views
8

我试图实现谷歌的Facenet纸:如何在凯拉斯实施三重损失?

所有的

enter image description here

首先,是有可能使用Keras的连续API来实现这一纸或者我应该去的图形API?

在任何情况下,请你告诉我,我如何通过自定义损失函数tripletLoss到模型编译,我如何收到anchor embeddingpositive embeddingnegative embedding作为参数来计算损失?

而且,应该是第二个参数Y在model.fit(),我没有任何在这种情况下...

+0

嘿!你能在Keras上实施Facenet吗?我正在研究一个需要这个项目的项目,并且想知道你是否能够解决这个问题...... – Rob

回答

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') 

关于.fit()y参数,因为你是一个最终处理它(目标函数的y_true参数从它采取的),我会说你可以通过任何你需要一个能够适合通过凯拉斯管道。如果你真的不需要任何监督,也许是一个虚拟矢量来通过维度检查。

最终,至于如何实现这个特定的文件,寻找tripletfacenetKeras doc没有返回任何东西。所以你可能要么自己实现它,要么找到有人。