【发布时间】:2018-12-10 15:36:27
【问题描述】:
我正在训练一个循环神经网络,但我想应用剪裁梯度。我正在使用 sgd。我可以使用剪裁梯度来计算为小批量计算的梯度总和吗?
【问题讨论】:
标签: neural-network deep-learning gradient recurrent-neural-network clipping
我正在训练一个循环神经网络,但我想应用剪裁梯度。我正在使用 sgd。我可以使用剪裁梯度来计算为小批量计算的梯度总和吗?
【问题讨论】:
标签: neural-network deep-learning gradient recurrent-neural-network clipping
剪切梯度的总和没有效果。您应该单独剪辑每个渐变。
这里是一个在 Tensorflow 中进行梯度裁剪的快速代码 sn-p:
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)
【讨论】: