我试图计算CNN输出之前最后一个致密层的梯度范数。 Windows 10,Jupyter Notebook 6,Tensorflow 1.13。这是代码。
optimizer=tf.train.AdamOptimizer(learning_rate)
gradients = optimizer.compute_gradients(loss=loss)
last_grad_norm=0;
for g,v in gradients:
if 'last' in v.name :
last_grad_norm = tf.sqrt(tf.reduce_mean(g**2))
break
train_op = optimizer.apply_gradients(gradients, global_step=global_step)
eval_metric_ops = None
with tf.name_scope('performance'):
tf.summary.scalar('gradient_norm', last_grad_norm)
tf.summary.scalar('learning_rate', learning_rate)
tf.summary.scalar('accuracy', accuracy[1])
我确实将该层命名为“ last”。在张量板上,图形仍在框中显示为“密集”。
,并且绘图中的last_grad_norm始终为0,表示if条件从不为True。我检查了tensorflow文档。我发现了var_list的命名方式。
任何人都可以提供一种消除梯度的方法吗?