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