Closed swjtulinxi closed 3 years ago
这个问题,我在另外一个 issue 已经回答过了,https://github.com/YimianDai/open-aff/issues/3。
我没有想过「防止数值太小梯度消失」这回事。既然有了 batch normalization,我相信乘不乘 2 是不会有影响的。简单的说,就是为了保证跟 X + Y 一样,两者前面的系数总和为 (1 + 1 = 2),所以乘了一个 2。
至于 iAFF 没用,因为我不觉得乘不乘 2 会有什么影响,所以写得时候没注意这个。刚开始写代码的时候写得随意了,类的名称也没有好好取,跑完实验后才发现 params 里面跟代码里的名称绑死了,如果为了美化代码要改名称,那必须重跑实验。因为 GPU 资源有限,所以我就没重跑,现在的代码就是最初的样子,所以写得随意了些。。。
为什么要用2的方式,是为了防止数值太小梯度消失吗,,但为什么iAFF里面又不用2了呢