三元组损失的softmax版本的梯度计算

2023-12-11

我一直在尝试在Caffe中实现softmax版本的三元组损失,描述于
霍弗和艾隆,使用三元组网络进行深度度量学习, ICLR 2015.

我已经尝试过这个,但我发现很难计算梯度,因为指数中的 L2 不是平方的。

有人可以帮我吗?


使用现有的 caffe 层实现 L2 规范可以节省您的所有精力。

这是一种计算方法||x1-x2||_2在咖啡厅中的“底部”x1 and x2(假设x1 and x2 are B-by-C斑点、计算B规范C尺寸差异)

layer {
  name: "x1-x2"
  type: "Eltwise"
  bottom: "x1"
  bottom: "x1"
  top: "x1-x2"
  eltwise_param { 
    operation: SUM
    coeff: 1 coeff: -1
  }
}
layer {
  name: "sqr_norm"
  type: "Reduction"
  bottom: "x1-x2"
  top: "sqr_norm"
  reduction_param { operation: SUMSQ axis: 1 }
}
layer {
  name: "sqrt"
  type: "Power"
  bottom: "sqr_norm"
  top: "sqrt"
  power_param { power: 0.5 }
}

对于论文中定义的三元组损失,您需要计算 L2 范数x-x+并为x-x-,连接这两个 blob 并将连接的 blob 提供给"Softmax" layer.
不需要肮脏的梯度计算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三元组损失的softmax版本的梯度计算 的相关文章

随机推荐