TensorFlow2学习笔记:7、优化器

下面是 TensorFlow官方文档 中的优化器种类:
TensorFlow2学习笔记:7、优化器_第1张图片
tensorflow内置优化器路径:
TensorFlow2学习笔记:7、优化器_第2张图片

tf.train.GradientDescentOptimizer

这个类是实现梯度下降算法的优化器。

tf.train.AdadeltaOptimizer

实现了Adadelta算法的优化器,该算法不需要手动调优学习速率,抗噪声能力强,可以选择不同的模型结构。Adadelta是对Adagrad的扩展。Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是计算对应的平均值。

tf.train.AdagradOptimizer

实现了AdagradOptimizer算法的优化器,Adagrad会累加之前所有的梯度平方。它用于处理大的稀疏矩阵,Adagrad可以自动变更学习速率,只是需要设定一个全局的学习速率,但这并非是实际学习速率,实际的速率是与以往参数的模之和的开方成反比的。这样使得每个参数都有一个自己的学习率。

tf.train.MomentumOptimizer

实现了MomentumOptimizer算法的优化器,如果梯度长时间保持一个方向,则增大参数更新幅度;反之,如果频繁发生符号翻转,则说明这是要减小参数更新幅度。可以把这一过程理解成从山顶放下一个球,会滑的越来越快。

tf.train.RMSPropOptimizer

实现了RMSPropOptimizer算法的优化器,它与Adam类似,只是使用了不同的滑动均值。

tf.train.AdamOptimizer

实现了AdamOptimizer算法的优化器,它综合了Momentum和RMSProp方法,对每个参数保留一个学习率与一个根据过去梯度信息求得的指数衰减均值。

如何选择:

如果数据是稀疏的,就用自适应方法,即 Adagrad, Adadelta, RMSprop, Adam

RMSprop, Adadelta, Adam 在很多情况下的效果是相似的。

Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum。

随着梯度变的稀疏,Adam 比 RMSprop 效果会好。

整体来讲,Adam 是最好的选择。

很多论文里都会用 SGD,没有 momentum 等。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点。

如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

你可能感兴趣的:(TensorFlow,tensorflow,学习,机器学习)