Closed billbliss3 closed 1 month ago
论文中公式5的操作其实并没有去掉,只是把实现方式从NonZeroReLU换成了ReLU,以防FP16训练报错。
原本NonZeroReLU中阈值eps=1e-6
,但FP16情况下1e-6会数值溢出,所以在 https://github.com/xiuqhou/Relation-DETR/commit/937ce08b03a5a99fc2b149257c4a7aa61259e83a 提交中把它换成了ReLU,这时eps=0
。修改前后对模型性能其实没影响。
论文中公式5的操作其实并没有去掉,只是把实现方式从NonZeroReLU换成了ReLU,以防FP16训练报错。
原本NonZeroReLU中阈值
eps=1e-6
,但FP16情况下1e-6会数值溢出,所以在 937ce08 提交中把它换成了ReLU,这时eps=0
。修改前后对模型性能其实没影响。
非常感谢您的解答。 其实我一直有个小疑问哈。为什么eps可以帮助exp在0附近的梯度消失问题。 或者换个说法,exp(x)的导数是exp(x),导数在0附近约等于exp(0)=1。咱们为什么说会有梯度消失的问题。
再次感谢作者的耐心解答。
感谢提问,exp(x)
梯度消失问题并不是发生于0附近,而是发生在负值区域。当x
越接近 $-\infty$ ,梯度exp
就越接近0。所以我们设置了一个阈值,让x
值不至于太小,阈值设置为0(最初设置的1e-6)也没有什么特殊的考虑。
多谢作者的解答
Question
您好, 在论文中您提到将relation的结果保证为正值,防止在exp之后的梯度消失问题。 但是我发现工程代码中,您在后续的代码整理中,将这个去除了。
请问这个trick是关键性的还是辅助性的?
补充信息
No response