def add_train_op(self, loss):
self.global_step = tf.Variable(0, name='global_step', trainable=False)
opt = tf.train.AdamOptimizer(learning_rate=self.lr)
gradients, variables = zip(*opt.compute_gradients(loss))
# save selected gradient summaries
#for grad in gradients:
#if 'BasicDecoder' in grad.name or 'gru_cell' in grad.name or 'highway_3' in grad.name:
#tf.summary.scalar(grad.name, tf.reduce_sum(grad))
# optionally cap and noise gradients to regularize
if self.config.cap_grads > 0:
with tf.variable_scope('cap_grads'):
tf.summary.scalar('global_gradient_norm', tf.global_norm(gradients))
gradients, _ = tf.clip_by_global_norm(gradients, self.config.cap_grads)
train_op = opt.apply_gradients(zip(gradients, variables), global_step=self.global_step)
return train_op
评论列表
文章目录