在tensorflow中,我使用以下代码片段按全局范数裁剪渐变:
trainable_variables = tf.trainable_variables()
gradients, self._global_norm = tf.clip_by_global_norm(
tf.gradients(loss, trainable_variables), 1.0)
即使我将范数剪裁为1.0,梯度怎么可能仍然大于1.0?
用于可视化的代码段:
for gradient, variable in gradients:
tf.summary.histogram("gradients/" + variable.name, tf.norm(gradient, ord=2))
该屏幕截图来自张量板中的“直方图”标签。