递归神经网络中的ADAM优化器

时间:2018-09-28 19:57:07

标签: python tensorflow optimization keras adam

我有一个问题,如何在循环神经网络中应用ADAM优化器。

通常,ADAM优化器的执行方式为(k代表外部迭代),

V_dw = beta_1 * V_dw + (1-beta_1) * dw
S_dw = beta_2 * S_dw + (1-beta_2) * dw^2
Vcorr_dw = V_dw/(1-beta_1^k)
Scorr_dw = S_dw/(1-beta_2^k)
w := w - alpha* Vcorr_dw / sqrt(Scorr_dw + epsilon)

这确实改变了正常的神经网络,因为我们没有在不同的层中共享权重。但是在RNN中,权重是每个层(或时间步长)中的共享参数。

问题是:V_dw仅在每个外部迭代中计算(这需要对来自各层的dw的所有更新求和)?或V_dw是在每次更新时分别从每个层计算的?

这是两种不同的方式。在我看来,V_dw仅在一次迭代完成后计算,因为Vcorr_dw与迭代步骤有关。但是我不确定我是否正确。

如果我做错了,哪种方法更适合更新权重w?在每一层计算V_dw?还是仅在每个外部迭代中计算V_dw

0 个答案:

没有答案