softmax版三重损失的梯度计算

时间:2016-03-29 06:34:24

标签: neural-network deep-learning caffe gradient-descent softmax

我一直在努力实现在Caffe中描述的三联体损失的softmax版本 Hoffer and Ailon, Deep Metric Learning Using Triplet Network, ICLR 2015

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

有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

使用现有的caffe层实现L2规范可以为您节省所有的喧嚣。

以下是计算“底部”function data2html(data) { ...// use .map and .join } $("#divid").append(data2html(data)) ||x1-x2||_2的caffe x1的一种方法(假设x2x1x2 -by - B blob,计算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 } } x-x+的L2范数,将这两个blob连接起来并将concat blob提供给x-x-层。
无需进行脏梯度计算。

答案 1 :(得分:1)

这是一个数学问题,但在这里。第一个等式是你习惯的,第二个等式是你不习惯的。

Derivation of norm