我正在训练一个比较一对图像的简单暹罗网络 . 我按照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但是有任何上限吗?
2 回答
在我看来,这就像一个超参数 . 较大的余量会将不同的数据分开,但很难训练网络 . 一小部分可以轻松地学习糟糕的网络 . 通常,您应该为不同的数据集选择不同的边距 . 对于上限,它由底部'data'和'data_p'确定 . 如果'data'和'data_p'的值范围受到约束,例如其绝对值小于1,则存在上限 .
Siamese网络的保证金被视为
hyper parameter
. 较大的保证金将使融合极为缓慢 .