optimization - Keras 中的 Adam 优化器有动量选项吗?

标签 optimization machine-learning neural-network deep-learning keras

这个问题说明了一切。由于 Adam 在大多数数据集上都表现良好,因此我想尝试对 Adam 优化器进行动量调整。到目前为止,我只在 Keras 中找到了 SGD 的动量选项

最佳答案

简短回答:Keras 中都没有。也不在 Tensorflow [编辑:请参阅最后的更新]

长答案:正如评论中已经提到的,Adam 已经融入了诸如动量之类的东西。以下是一些相关佐证:

来自强烈推荐An overview of gradient descent optimization algorithms (也可作为 paper ):

In addition to storing an exponentially decaying average of past squared gradients u[t] like Adadelta and RMSprop, Adam also keeps an exponentially decaying average of past gradients m[t], similar to momentum

来自Stanford CS231n: CNNs for Visual Recognition :

Adam is a recently proposed update that looks a bit like RMSProp with momentum

请注意,某些框架实际上包含 Adam 的 momentum 参数,但这实际上是 beta1 参数;这是CNTK :

momentum (float, list, output of momentum_schedule()) – momentum schedule. Note that this is the beta1 parameter in the Adam paper. For additional information, please refer to the this CNTK Wiki article.

也就是说,有一篇 ICLR 2016 论文,标题为 Incorporating Nesterov momentum into Adam ,以及 implementation skeleton作者在 Tensorflow 中 - 但不能对此提供任何意见。

更新:Keras 现在确实包含一个名为 Nadam 的优化器,基于上述 ICLR 2016 论文;来自docs :

Much like Adam is essentially RMSprop with momentum, Nadam is Adam RMSprop with Nesterov momentum.

它也作为贡献模块包含在 Tensorflow 中 NadamOptimizer .

关于optimization - Keras 中的 Adam 优化器有动量选项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168616/

相关文章:

python - 将图层添加到 keras 预训练模型中

algorithm - 如何测试我的反向传播神经网络的实现是否正确

python - 对多行执行函数

java - java final 是否有助于编译器创建更高效​​的字节码?

c++ - C++ 中的堆行为

machine-learning - 可以在cuda中使用libsvm吗?

java - 带有 python 后端的 Android 应用程序

algorithm - 具有死区线性损失函数的快速/高效计算

machine-learning - Keras 如何更新多标签学习中的权重(实现方面)

r - 通过随机森林和神经网络人为增加回归训练数据