gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:11:47 27 4
gpt4 key购买 nike

我一直在尝试在 Caffe 中实现三元组损失的 softmax 版本
Hoffer and Ailon, Deep Metric Learning Using Triplet Network, ICLR 2015 .

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

有人可以帮我吗?

最佳答案

使用现有的 caffe 层实现 L2 规范可以省去您的所有麻烦。

这是在 caffe 中计算“底部”x1x2||x1-x2||_2 的一种方法(假设x1x2B-by-C blob,计算 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+x-x- 的 L2 范数,连接这两个 blob 并提供连接 blob到“Softmax”层。
无需脏梯度计算。

关于neural-network - 三元组损失的softmax版本的梯度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36277060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com