AdamOptimizer是TensorFlow中实现Adam算法的优化器。Adam即Adaptive Moment Estimation(自适应矩估计),是一个寻找全局最优点的优化算法,引入了二次梯度校正。Adam 算法相对于其它种类算法有一定的优越性,是比较常用的算法之一。
一、算法流程

初始化:

更新规则:

二、 参数定义
__init__(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)
参数含义:
learning_rate: A Tensor or a floating point value. (学习率)
beta1: A float value or a constant float tensor. (一阶矩估计的指数衰减率)
beta2: A float value or a constant float tensor. (二阶矩估计的指数衰减率)
epsilon: A small constant for numerical stability. (一个非常小的数,防止除以零)
use_locking: 如果为真,则使用锁进行更新操作。
name: 使用梯度时创建的操作的可选名称,默认为 “Adam”。
三、可调用的方法
下面仅列出一些方法,具体见官方文档(文末参考文献)。
1.apply_gradients
功能:将梯度应用于变量。
apply_gradients(
grads_and_vars,
global_step=None,
name=None
)
2.compute_gradients
功能:计算 var_list 中变量的 loss 的梯度。
compute_gradients(
loss,
var_list=None,
gate_gradients=GATE_OP,
aggregation_method=None,
colocate_gradients_with_ops=False,
grad_loss=None
)
3.get_name
get_name()
4.get_slot
功能:返回由 Optimizer 为 var 创建的名为name的slot。
get_slot(
var,
name
)
5.get_slot_names
功能:返回由 Optimizer 创建的 slot 名称的列表。
get_slot_names()
6.minimize
功能:通过更新 var_list 添加操作以最大限度地最小化 loss。
minimize(
loss,
global_step=None,
var_list=None,
gate_gradients=GATE_OP,
aggregation_method=None,
colocate_gradients_with_ops=False,
name=None,
grad_loss=None
)
7.variables
功能:编码Optimizer当前状态的变量列表。
variables()
四、其它
相比于SGD算法:
不容易陷于局部优点
速度更快,学习效果更为有效
纠正其他优化技术中存在的问题,如学习率消失或是高方差的参数更新导致损失函数波动较大等问题。
此外,Adam 的调参相对简单,默认参数就可以处理绝大部分的问题。
参考文献:
https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer
http://www.tensorfly.cn/tfdoc/api_docs/python/train.html#AdamOptimizer
————————————————
版权声明:本文为CSDN博主「polyhedronx」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/polyhedronx/article/details/93405760
AdamOptimizer是TensorFlow中的优化器,基于Adaptive Moment Estimation算法,适用于全局最优点搜索,具有二次梯度校正特性。它相较于SGD算法更不易陷入局部最优,速度更快,且学习效果更佳。Adam算法包含学习率、一阶和二阶矩估计的指数衰减率等关键参数。

8113

被折叠的 条评论
为什么被折叠?



