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

AdamOptimizer是TensorFlow中的优化器,基于Adaptive Moment Estimation算法,适用于全局最优点搜索,具有二次梯度校正特性。它相较于SGD算法更不易陷入局部最优,速度更快,且学习效果更佳。Adam算法包含学习率、一阶和二阶矩估计的指数衰减率等关键参数。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值