tf.train.AdamOptimizer()【Adam优化器】
作用:
迭代更新神经网络的参数
定义:
__init__(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)
关键字参数:
learning_rate(
):学习率
beta1(
):一阶矩估计的衰减率
beta2(
):二阶矩估计的衰减率
epsilon(
):辅助参数【不是论文算法1中的
】
use_locking:锁定更新参数
name:优化器名称
优化过程:
参数:
1.
:学习率
2.
:一阶矩估计的衰减率
3.
:二阶矩估计的衰减率
4.
:需要优化的参数
5.
:目标函数
变量初值:
1.m
=0:一阶矩估计的偏差
2.v
=0:二阶矩估计的偏差
3.t=0:优化次数
过程:
如果
(t时刻的参数)没有收敛:
# 优化次数+1
# 获取最新的目标函数值的梯度
# 更新一阶矩估计的偏差
# 更新二阶矩估计的偏差
# 偏差修正的一阶矩估计
# 偏差修正的二阶矩估计
# 更新参数
收敛后结束迭代,返回
tf.train.AdamOptimizer().minimize【优化目标最小化】
作用:
使优化器通过最小化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
)
必选参数:
loss:需要最小化的值
关键字参数:
global_step:全局次数,如果不为None,则每次加1
var_list:自定义需要优化的参数,如果为None,则优化TRAINABLE_VARIABLES
gate_gradients:并发性参数,默认=GATE_OP(节点内部不并发)。可选GATE_NONE(最高级别并发)和GATE_GRAPH(最低级别并发)
aggregation_method:聚合方法
colocate_gradients_with_ops
name:返回操作的名称
grad_loss:维持loss的梯度计算结果
论文原文链接:Kingma D P, Ba J. Adam: A Method for Stochastic Optimization[J]. Computer Science, 2014.