tensorflow——optimizer.minimize()、optimizer.compute_gradients()、optimizer.apply_gradients()

优化函数

# 损失函数
loss = ...
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train_op =optimizer.minimize(loss,global_step=global_step)

其中minimize()包含两个步骤:
1.计算loss对指定val_list的梯度(导数),返回元组列表[(gradient,variable),…]
compute_gradients(loss,val_list)
注:tf.gradients(loss, tf.variables)与compute_gradients(loss,val_list)作用类似,但是只返回梯度
2.用计算得到的梯度来更新对应的变量(权重)
optimizer.apply_gradients(grads_and_vars, global_step=global_step, name=None)将
compute_gradients(loss,val_list)的返回值作为输入对variable更新
注意:在程序中global_step初始化为0,每次更新参数时,自动加1

# 等价于上面的代码
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
grads_and_vars = optimizer.compute_gradients(loss)
train_op = optimizer.apply_gradients(grads_and_vars)

将minimize()分成两个步骤
原因:在某种情况下对梯度进行修正,防止梯度消失或者梯度爆炸
如 tf.clip_by_norm()对梯度进行裁剪,通过控制梯度的最大范式,防止梯度爆炸的问题,是一种比较常用的梯度规约的方式

example:

import tensorflow as tf

w = tf.Variabl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值