def gradient_summaries(gvs, norm=True, ratio=True, histogram=True):
"""Register gradient summaries.
Logs the global norm of the gradient, ratios of gradient_norm/uariable_norm and
histograms of gradients.
:param gvs: list of (gradient, variable) tuples
:param norm: boolean, logs norm of the gradient if True
:param ratio: boolean, logs ratios if True
:param histogram: boolean, logs gradient histograms if True
"""
with tf.name_scope('grad_summary'):
if norm:
grad_norm = tf.global_norm([gv[0] for gv in gvs])
tf.summary.scalar('grad_norm', grad_norm)
for g, v in gvs:
var_name = v.name.split(':')[0]
if g is None:
print 'Gradient for variable {} is None'.format(var_name)
continue
if ratio:
log_ratio((g, v), '/'.join(('grad_ratio', var_name)))
if histogram:
tf.summary.histogram('/'.join(('grad_hist', var_name)), g)
评论列表
文章目录