tf.train.MomentumOptimizer
的文档提供了一个use_nesterov
参数来使用Nesterov的加速梯度(NAG)方法。
但是,NAG要求计算当前变量所在位置以外的位置处的梯度,并且apply_gradients
接口只允许传递当前梯度。所以我不太明白NAG算法是如何通过这个接口实现的。
文档描述了关于实现的以下内容:
use_nesterov
:如果为真,则使用涅斯特罗夫动量。参见Sutskever et al., 2013。此实现始终在传递给优化器的变量的值处计算梯度。使用内斯特罗夫动量使变量跟踪论文中称为theta_t + mu*v_t
的值。
在通读了链接中的论文后,我有点不确定这个描述是否回答了我的问题。当接口不需要提供梯度函数时,如何实现NAG算法?
https://stackoverflow.com/questions/50774683
复制相似问题