import tensorflow as tf

            self._train_op = optimizer.apply_gradients(
                zip(grads, tvars),
                global_step=tf.train.get_or_create_global_step())

            self._new_lr = tf.placeholder(
                tf.float32, shape=[], name='new_learning_rate')
            self._lr_update = tf.assign(self._lr, self._new_lr)

            self.saver = tf.train.Saver(tf.global_variables())

    def _get_lstm_cell(self, config, is_training):
        if config.rnn_mode == BASIC:
