admin管理员组文章数量:1642447
1.NAdam集大成
前面我们讲Adam的时候,提到Adam是Adaptive+Momentum。更前面的时候,我们还提到Nesterov,如果把Nesterov跟Adam结果,就是我们最后的集大成者NAdam。
class Nadam(Optimizer):
"""Nesterov Adam optimizer.
Much like Adam is essentially RMSprop with momentum,
Nadam is Adam RMSprop with Nesterov momentum.
Default parameters follow those provided in the paper.
It is recommended to leave the parameters of this optimizer
at their default values.
Arguments:
lr: float >= 0. Learning rate.
beta_1/beta_2: floats, 0 < beta < 1. Generally close to 1.
epsilon: float >= 0. Fuzz factor. If `None`, defaults to `K.epsilon()`.
"""
def __init__(self,
lr=0.002,
beta_1=0.9,
beta_2=0.999,
epsilon=None,
schedule_decay=0.004,
**kwargs):
super(Nadam, self).__init__(**kwargs)
with K.name_scope(self.__class__.__name__):
self.iterations = K.variable(0, dtype='int64', name='iterations')
self.m_schedule = K.variable(1., name='m_schedule')
self.lr = K.variable(lr, name='lr')
self.beta_1 = K.variable(beta_1, name='beta_1')
self.beta_2 = K.variable(beta_2, name='beta_2')
if epsilon is None:
epsilon = K.epsilon()
self.epsilon = epsilon
self.schedule_decay = schedule_decay
...
tensorflow中Nadam源码,开篇两句话就揭示了本质:
1.Adam的本质是带动量的RMSprop。
2.Nadam是带Nesterov动量的Adam RMSprop。
其 β 1 , β 2 \beta_1, \beta_2 β1,β2等参数与Adam的含义与数值都是一致的。
2.如何选择优化算法
1.如果数据稀疏,一般自适应算法比较好,比如AdaGrad, AdaDelta, RMSProp, Adam等。
2.一般来说,Adam会是一个不错的选择。
3.可以在训练初始阶段,采用Adam提升收敛速度,后期在切换到SGD进行调优。
参考文献
https://zhuanlan.zhihu/p/32338983
版权声明:本文标题:深度学习优化算法大全系列7:NAdam,算法选择,调参 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729341278a1197563.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论