我一直在尝试实现 Caffe 中描述的三元组损失的 softmax 版本,具体说明如下:
Hoffer 和 Ailon,《使用三重态网络进行深度度量学习》,ICLR 2015。
我已经尝试过了,但是由于指数的 L2 不平方,因此我发现很难计算梯度。
有人可以在这里帮我吗?
我一直在尝试实现 Caffe 中描述的三元组损失的 softmax 版本,具体说明如下:
Hoffer 和 Ailon,《使用三重态网络进行深度度量学习》,ICLR 2015。
我已经尝试过了,但是由于指数的 L2 不平方,因此我发现很难计算梯度。
有人可以在这里帮我吗?
2 回答
使用现有的 Caffe 层实施 L2 规范可以节省所有麻烦。
这是一种为“底部”的
x1
和x2
计算 Caffe||x1-x2||_2
的方法(假设x1
和x2
是B
-by-C
Blob,为C
尺寸差异计算B
范数)对于本文中定义的三重态损失,您需要计算
x-x+
和x-x-
的 L2 范数,将这两个 Blob 合并,并将 concat 的 Blob 馈送到"Softmax"
层。无需进行肮脏的梯度计算。
这是一个数学问题,但这是正确的。第一个方程式是您习惯的,第二个方程式是未平方的情况。