首页 > 解决方案 > 用随机梯度下降裁剪梯度

问题描述

我正在训练一个循环神经网络,但我想应用剪裁梯度。我正在使用 sgd。我可以使用剪裁梯度来计算为小批量计算的梯度总和吗?

标签: neural-networkdeep-learninggradientrecurrent-neural-networkclipping

解决方案


裁剪梯度的总和没有效果。相反,您应该单独剪辑每个渐变。

以下是 Tensorflow 中渐变剪裁的快速代码片段:

max = 20
grads = tf.gradients(loss, tf.trainable_variables())
grads, _ = tf.clip_by_global_norm(grads, max)  # gradient clipping
grads_and_vars = list(zip(grads, tf.trainable_variables()))
optimizer = tf.train.AdamOptimizer(learning_rate)
train_op = optimizer.apply_gradients(grads_and_vars)

推荐阅读