def _add_train_op(self):
"""Sets self._train_op, op to run for training."""
config = self._config
tvars = tf.trainable_variables()
with tf.device(self._get_gpu(self._num_gpus - 1)):
grads, global_norm = tf.clip_by_global_norm(
tf.gradients(self._loss, tvars), config.max_grad_norm)
tf.summary.scalar('global_norm', global_norm)
lr_rate = tf.maximum(
config.min_lr, # min_lr_rate.
tf.train.exponential_decay(config.lr, self.global_step,
config.decay_steps, config.decay_rate))
optimizer = tf.train.AdamOptimizer(lr_rate, epsilon=config.adam_epsilon)
tf.summary.scalar('learning_rate', lr_rate)
self._train_op = optimizer.apply_gradients(
zip(grads, tvars), global_step=self.global_step, name='train_step')
评论列表
文章目录