用Caffe训练暹罗网络

时间:2017-03-28 15:49:47

标签: image-processing neural-network deep-learning caffe

我正在训练一个比较一对图像的简单暹罗网络。我按照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但是有没有上限?

3 个答案:

答案 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 /