我正在训练一个比较一对图像的简单暹罗网络。我按照caffe(siamese)给出的示例,制作了自己的模型。
我的问题在于Constrastive Loss功能。该函数实现的细节是caffe定义here。在我的实现中,我使用了margin = 1,定义如下
layer {
name: "loss"
type: "ContrastiveLoss"
bottom: "data"
bottom: "data_p"
bottom: "label"
top: "loss"
contrastive_loss_param {
margin: 1
}
}
如果异常,我的数据会标记为 0 ,如果相似,则 1 。我对对比度损失函数的边缘感到困惑。如何选择保证金参数?
Page 3 of the initial paper by Hadsell et.al状态保证金> 0但是有没有上限?
答案 0 :(得分:0)
在我看来,这就像一个超参数。 较大的余量会将不同的数据分开,但很难训练网络。一小部分可以轻松地学习糟糕的网络。通常,您应该为不同的数据集选择不同的边距。对于上限,它由底部'data'和'data_p'确定。如果'data'和'data_p'的值范围受到约束,例如其绝对值小于1,则存在上限。
答案 1 :(得分:0)
Siamese网络中的保证金被视为TokenEnhancer.enhance()
。较大的保证金将使融合极为缓慢。
答案 2 :(得分:0)
裕度的上限是损失公式可以获得的样本之间的最大距离。因此,它取决于所选的距离:如果其余弦距离为1,则其欧氏距离为无界。 Thie博客文章解释了排名损失的计算https://gombru.github.io/2019/04/03/ranking_loss /