YONG Hongwei
YONG Hongwei
你意思加了GC以后训练变得很慢了吗? 但是实际上我们测都是只占用了很少的计算量
我建议你都可以试一下,对attention这块的FC我们还没有测。不过我觉得应该也是会有一定效果的。 对于Adam来讲,GC可以放在前面也可以放在后面,你都可以试一下,参考我们最新算法的代码: https://github.com/Yonghongwei/Advanced-optimizer-with-Gradient-Centralization
对于SGD来讲,放在前面和后面是等价的。 但是对于自适应学习速率的方法,放在前面和后面就不是等价的了。 这点文章里没说的很清楚。放在后面可以保证每次更新都满足文章中所说的weight在同一个超平面上。放在 前面的话,只能有梯度方面的优势,但是weight更新后就不在我们希望的超平面上了。我们实际中发现放在后面有时候 会更好一些,你可以在你的问题上试试。
感觉你需要先观察一下,是不是训练加速了,但是测试准确率下降了。如果是这种情况,可能是用了GC之后训练过快导致了overfitting,因为小网络太好优化了。你可以增大weight_decay, 或者尝试用一下SGD_GCC,只在卷积层使用。
也可能是网络太小,还没有过参数化的缘故。SGD_GC和SGD_GCC的区别是后者只在卷积层加GC,前者卷积和FC都加GC。有时候可能是需要调调weight decay 和 lr。
yes. Or you can update the Pytorch version.