【python】Tensorflow coding 笔记

Tensorflow coding 笔记

Tensorflow loss — 梯度修剪apply_gradients和compute_gradients

梯度修剪主要避免训练梯度爆炸和消失问题

TensorFlow中的 minimize(loss,global_step,var_list) 包含两个步骤:compute_gradients和apply_gradients.

第一步: compute_gradients 根据loss目标函数计算梯度.
第二步: apply_gradients 使用计算得到的梯度来更新对应的variable.

eg.

import tensorflow as tf
optimizer = tf.train.AdamOptimizer(learning_rate=LEARNING_RATE)
grads_and_vars = optimizer.compute_gradients(loss,var_list)
train_op = optimizer.apply_gradients(grads_and_vars, global_step

其中三个参数:
(1)loss:最小化的目标,训练的目标函数,如交叉熵损失函数。
(2)var_list:每次要迭代更新的参数集合。
(3)global_step:梯度每下降一次加1,用于记录迭代优化的次数,用于参数输出和保存。

ps.为什么minimize()要分开两个步骤:
有时候需要对梯度做一定的修正,例如为了防止 gradient vanishing(梯度消失)或 gradient explosion (梯度爆炸),需要事先采取一些干预措施以避免程序出现nan情况。
有时候需要给计算得到的梯度乘以一个权重、或创建多GPU优化器、或其它操作。

引用链接:
https://zhuanlan.zhihu.com/p/343628982

tf.reshape

tf.reshape(
tensor, shape, name=None
)

eg.

>>> t = [[1, 2, 3],
... [4, 5, 6]]
>>> tf.reshape(t, [-1])
<tf.Tensor 'Reshape_1:0' shape=(6,) dtype=int32>
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值