如何获得CNN的最后一层的梯度来计算gradient_norm?

时间:2019-08-30 21:17:57

标签: tensorflow neural-network gradient layer tensorboard

我试图计算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的命名方式。

任何人都可以提供一种消除梯度的方法吗?

0 个答案:

没有答案