我目前正在查看 Hubara 等人关于二值化神经网络的论文。
我一直在理解论文的算法 2。该算法使用基于移位(位移)的 AdaMax,其中 AdaMax 是 Adam 优化器的扩展。特别是,他们正在使用
在哪里是梯度,是前一个参数,,,是学习率,以及 Adam 优化器的 beta。他们表示代表左右位移。我自己知道左移和右移,但我不确定我们如何同时拥有两者?帮助将不胜感激。谢谢你。
我目前正在查看 Hubara 等人关于二值化神经网络的论文。
我一直在理解论文的算法 2。该算法使用基于移位(位移)的 AdaMax,其中 AdaMax 是 Adam 优化器的扩展。特别是,他们正在使用
在哪里是梯度,是前一个参数,,,是学习率,以及 Adam 优化器的 beta。他们表示代表左右位移。我自己知道左移和右移,但我不确定我们如何同时拥有两者?帮助将不胜感激。谢谢你。
我看看他们的github。
以下是相关部分:
local stepSize = lr/biasCorrection1 --math.sqrt(biasCorrection2)/biasCorrection1
stepSize=math.pow(2,torch.round(math.log(stepSize)/(math.log(2))))
并且
state.v:copy(torch.pow(2,torch.round(torch.log(state.v):div(math.log(2)))))
state.v:add(epsilon)
tmp:addcdiv(1, state.m, state.v)
似乎对于, 正在做的是
如果是左移和右移如果.
另一方面,对于, 正在做的是
如果和左移如果.