TensorFlow优化算法 tf.train.AdamOptimizer 简介

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算法:

  1. 不容易陷于局部优点
  2. 速度更快,学习效果更为有效
  3. 纠正其他优化技术中存在的问题,如学习率消失或是高方差的参数更新导致损失函数波动较大等问题。

此外,Adam 的调参相对简单,默认参数就可以处理绝大部分的问题。

 

参考文献:

https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer

http://www.tensorfly.cn/tfdoc/api_docs/python/train.html#AdamOptimizer

  • 24
    点赞
  • 170
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值