Example #1
0
 def export_ops(self, name):
   """Exports ops to collections."""
   self._name = name
   ops = {util.with_prefix(self._name, "cost"): self._cost}
   if self._is_training:
     ops.update(lr=self._lr, new_lr=self._new_lr, lr_update=self._lr_update)
     if self._rnn_params:
       ops.update(rnn_params=self._rnn_params)
   for name, op in ops.items():
     tf.add_to_collection(name, op)
   self._initial_state_name = util.with_prefix(self._name, "initial")
   self._final_state_name = util.with_prefix(self._name, "final")
   util.export_state_tuples(self._initial_state, self._initial_state_name)
   util.export_state_tuples(self._final_state, self._final_state_name)
Example #2
0
 def import_ops(self):
     """Imports ops from collections."""
     if self._is_training:
         self._train_op = tf.get_collection_ref("train_op")[0]
         self._lr = tf.get_collection_ref("lr")[0]
         self._new_lr = tf.get_collection_ref("new_lr")[0]
         self._lr_update = tf.get_collection_ref("lr_update")[0]
         rnn_params = tf.get_collection_ref("rnn_params")
         if self._cell and rnn_params:
             params_saveable = tf.contrib.cudnn_rnn.RNNParamsSaveable(
                 self._cell,
                 self._cell.params_to_canonical,
                 self._cell.canonical_to_params,
                 rnn_params,
                 base_variable_scope="Model/RNN")
             tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS,
                                  params_saveable)
     self._cost = tf.get_collection_ref(util.with_prefix(
         self._name, "cost"))[0]
     num_replicas = 1
     self._initial_state = util.import_state_tuples(
         self._initial_state, self._initial_state_name, num_replicas)
     self._final_state = util.import_state_tuples(self._final_state,
                                                  self._final_state_name,
                                                  num_replicas)
Example #3
0
 def export_ops(self, name):
     """Exports ops to collections."""
     self._name = name
     ops = {util.with_prefix(self._name, "cost"): self._cost}
     if self._is_training:
         ops.update(lr=self._lr,
                    new_lr=self._new_lr,
                    lr_update=self._lr_update)
         if self._rnn_params:
             ops.update(rnn_params=self._rnn_params)
     for name, op in ops.items():
         tf.add_to_collection(name, op)
     self._initial_state_name = util.with_prefix(self._name, "initial")
     self._final_state_name = util.with_prefix(self._name, "final")
     util.export_state_tuples(self._initial_state, self._initial_state_name)
     util.export_state_tuples(self._final_state, self._final_state_name)
Example #4
0
 def import_ops(self):
     """Import ops from collections."""
     if self._is_training:
         self._train_op = tf.get_collection_ref('train_op')[0]
         self._lr = tf.get_collection_ref('lr')[0]
         self._new_lr = tf.get_collection_ref('new_lr')[0]
         self._lr_update = tf.get_collection_ref('lr_update')[0]
         rnn_params = tf.get_collection_ref('rnn_params')
         if self._cell and rnn_params:
             params_saveable = tf.contrib.cudnn_rnn.RNNParamsSaveable(
                 self._cell,
                 self._cell.params_to_canonical,
                 self._cell.canonical_to_params,
                 rnn_params,
                 base_variable_scope='Model/RNN')
             tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS,
                                  params_saveable)
     self._cost = tf.get_collection_ref(util.with_prefix(
         self._name, 'cost'))[0]
     num_replicas = FLAGS.num_gpus if self._name == 'Train' else 1
     self._initial_state = util.import_state_tuples(
         self._initial_state, self._initial_state_name, num_replicas)
     self._final_state = util.import_state_tuples(self._final_state,
                                                  self._final_state_name,
                                                  num_replicas)
Example #5
0
 def import_ops(self):
     """Imports ops from collections."""
     if self._is_training:
         self._train_op = tf.get_collection_ref("train_op")[0]
         self._lr = tf.get_collection_ref("lr")[0]
         self._new_lr = tf.get_collection_ref("new_lr")[0]
         self._lr_update = tf.get_collection_ref("lr_update")[0]
         self._params_size = tf.get_collection_ref("params_size")[0]
         if FLAGS.num_gpus:
             self._memory_use = tf.get_collection_ref("memory_use")[0]
         rnn_params = tf.get_collection_ref("rnn_params")
     #   if self._cell and rnn_params:
     # params_saveable = tf.contrib.cudnn_rnn.RNNParamsSaveable(
     #     self._cell,
     #     self._cell.params_to_canonical,
     #     self._cell.canonical_to_params,
     #     rnn_params,
     #     base_variable_scope="Model/RNN")
     # params_saveable = tf.contrib.cudnn_rnn.CudnnLSTMSaveable(
     #     rnn_params,
     #     self._cell.num_layers,
     #     self._cell.num_units,
     #     self._cell.input_size,
     #     self._cell.input_mode,
     #     self._cell.direction,
     #     scope="Model/RNN")
     # tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS, params_saveable)
     self._cost = tf.get_collection_ref(util.with_prefix(
         self._name, "cost"))[0]
     num_replicas = FLAGS.num_gpus if self._name == "Train" else 1
     self._initial_state = util.import_state_tuples(
         self._initial_state, self._initial_state_name, num_replicas)
     self._final_state = util.import_state_tuples(self._final_state,
                                                  self._final_state_name,
                                                  num_replicas)
Example #6
0
 def export_ops(self, name):
     self._name = name
     ops = {util.with_prefix(self._name, 'cost'): self._cost}
     tf.add_to_collection(util.with_prefix(self._name, 'logits'),
                          self._logits)
     if self._is_training:
         ops.update(lr=self._lr,
                    new_lr=self._new_lr,
                    lr_update=self._lr_update)
         if self._rnn_params:
             ops.update(rnn_params=self._rnn_params)
     for name, op in ops.items():
         tf.add_to_collection(name, op)
     self._initial_state_name = util.with_prefix(self._name, 'initial')
     self._final_state_name = util.with_prefix(self._name, 'final')
     util.export_state_tuples(self._initial_state, self._initial_state_name)
     util.export_state_tuples(self._final_state, self._final_state_name)
Example #7
0
  def export_ops(self, name):
    """Exports ops to collections."""
    self._name = name
    self._exported_ops = {}
    ops = {}
    ops[util.with_prefix(self._name, 'clfs_padd')] = self._padding
    ops[util.with_prefix(self._name, 'last_step')] = self._last_step
    for key, preds in self._predictions.items():
      ops[util.with_prefix(self._name, key)] = preds
    self._exported_ops.update({'predictions': [f'{self._name}/{k}' for k in self._predictions]})
    for key, loss in self._losses.items():
      ops[util.with_prefix(self._name, key)] = loss
    for key, loss in self._l2_losses.items():
      ops[util.with_prefix(self._name, key)] = loss
    self._exported_ops.update({'losses': [f'{self._name}/{k}' for k in self._losses.keys()],
      'l2_losses': [f'{self._name}/{k}' for k in self._l2_losses.keys()]})
    ops.update({f'{name}/cur_epoch': self._cur_epoch,
      f'{name}/global_step': self._global_step})
    self._exported_ops.update({'epoch_and_step': [f'{name}/cur_epoch', f'{name}/global_step']})
    if self._is_training:
      for key, train_op in self._train_ops.items():
        ops[key] = train_op
      self._exported_ops.update({'train_ops': self._train_ops.keys()})
      ops.update(lr=self._lr, new_lr=self._new_lr, lr_update=self._lr_update,
        new_val=self._new_val, update_epoch=self._update_epoch)
      
    for name, op in ops.items():
      tf.add_to_collection(name, op)

    self._initial_state_name = util.with_prefix(self._name, "initial")
    self._final_state_name = util.with_prefix(self._name, "final")
    util.export_state_tuples(self._initial_state, self._initial_state_name)
    util.export_state_tuples(self._final_state, self._final_state_name)
Example #8
0
 def import_ops(self):
     """Imports ops from collections."""
     if self._is_training:
         self._train_op = tf.get_collection_ref("train_op")[0]
         self._lr = tf.get_collection_ref("lr")[0]
         self._new_lr = tf.get_collection_ref("new_lr")[0]
         self._lr_update = tf.get_collection_ref("lr_update")[0]
     self._cost = tf.get_collection_ref(util.with_prefix(self._name, "cost"))[0]
     self._final_state = util.import_state_tuples(self._final_state, self._final_state_name)
Example #9
0
 def export_ops(self, name):
     """Exports ops to collections."""
     self._name = name
     ops = {util.with_prefix(self._name, 'cost'): self._cost}
     if self._is_training:
         ops.update(lr=self._lr,
                    new_lr=self._new_lr,
                    lr_update=self._lr_update)
         if self._rnn_params:
             ops.update(rnn_params=self._rnn_params)
     if self.model_type == 'test':
         ops.update(logits=self.logits, y=self.y)
     for name, op in ops.items():
         tf.add_to_collection(name, op)
     self._initial_state_name = util.with_prefix(self._name, 'initial')
     self._final_state_name = util.with_prefix(self._name, 'final')
     util.export_state_tuples(self._initial_state, self._initial_state_name)
     util.export_state_tuples(self._final_state, self._final_state_name)
Example #10
0
 def import_ops(self, num_gpus = 1):
     """Imports ops from collections."""
     
     if self._is_training:
         self._train_op = tf.get_collection_ref("train_op")[0]
         self._lr = tf.get_collection_ref("lr")[0]
         self._new_lr = tf.get_collection_ref("new_lr")[0]
         self._lr_update = tf.get_collection_ref("lr_update")[0]
         
     self._cost = tf.get_collection_ref(util.with_prefix(self._name, "cost"))[0]
     self._kl_loss = tf.get_collection_ref(util.with_prefix(self._name, "kl_div"))[0]
     self._input_data = tf.get_collection_ref(util.with_prefix(self._name, "input_data"))[0]
     self._output = tf.get_collection_ref(util.with_prefix(self._name, "output"))[0]
     self._targets = tf.get_collection_ref(util.with_prefix(self._name, "targets"))[0]
     
     num_replicas = num_gpus if self._name == "Train" else 1
     self._initial_state = util.import_state_tuples(
         self._initial_state, self._initial_state_name, num_replicas)
     self._final_state = util.import_state_tuples(
         self._final_state, self._final_state_name, num_replicas)
Example #11
0
 def import_ops(self):
   """Imports ops from collections."""
   if self._is_training:
     self._train_op = tf.get_collection_ref("train_op")[0]
     self._lr = tf.get_collection_ref("lr")[0]
     self._new_lr = tf.get_collection_ref("new_lr")[0]
     self._lr_update = tf.get_collection_ref("lr_update")[0]
     rnn_params = tf.get_collection_ref("rnn_params")
     if self._cell and rnn_params:
       params_saveable = tf.contrib.cudnn_rnn.RNNParamsSaveable(
           self._cell,
           self._cell.params_to_canonical,
           self._cell.canonical_to_params,
           rnn_params,
           base_variable_scope="Model/RNN")
       tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS, params_saveable)
   self._cost = tf.get_collection_ref(util.with_prefix(self._name, "cost"))[0]
   self._tranM = tf.get_collection_ref(util.with_prefix(self._name, "tranM"))[0]
   self._logits = tf.get_collection_ref(util.with_prefix(self._name, "logits"))[0]
   self._tar_test = tf.get_collection_ref(util.with_prefix(self._name, "tar_test"))[0]
   self._wei_test = tf.get_collection_ref(util.with_prefix(self._name, "wei_test"))[0]
   num_replicas = FLAGS.num_gpus if self._name == "Train" else 1
Example #12
0
 def export_ops(self, name):
     """Exports ops to collections."""
     self._name = name
     ops = {util.with_prefix(self._name, "cost"): self._cost,
            util.with_prefix(self._name, "kl_div"): self._kl_loss,
            util.with_prefix(self._name, "input_data"): self._input_data,
            util.with_prefix(self._name, "output"): self._output,
            util.with_prefix(self._name, "targets"): self._targets,
            }
     
     if self._is_training:
         ops.update(lr=self._lr, new_lr=self._new_lr, lr_update=self._lr_update)
         
     for name, op in ops.items():
         tf.add_to_collection(name, op)
         
     self._initial_state_name = util.with_prefix(self._name, "initial")
     self._final_state_name = util.with_prefix(self._name, "final")
     util.export_state_tuples(self._initial_state, self._initial_state_name)
     util.export_state_tuples(self._final_state, self._final_state_name)
Example #13
0
 def import_ops(self):
   """Imports ops from collections."""
   if self._is_training:
     self._train_op = tf.get_collection_ref("train_op")[0]
     self._lr = tf.get_collection_ref("lr")[0]
     self._new_lr = tf.get_collection_ref("new_lr")[0]
     self._lr_update = tf.get_collection_ref("lr_update")[0]
     rnn_params = tf.get_collection_ref("rnn_params")
     if self._cell and rnn_params:
       params_saveable = tf.contrib.cudnn_rnn.RNNParamsSaveable(
           self._cell,
           self._cell.params_to_canonical,
           self._cell.canonical_to_params,
           rnn_params,
           base_variable_scope="Model/RNN")
       tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS, params_saveable)
   self._cost = tf.get_collection_ref(util.with_prefix(self._name, "cost"))[0]
   num_replicas = FLAGS.num_gpus if self._name == "Train" else 1
   self._initial_state = util.import_state_tuples(
       self._initial_state, self._initial_state_name, num_replicas)
   self._final_state = util.import_state_tuples(
       self._final_state, self._final_state_name, num_replicas)
Example #14
0
 def import_ops(self,config):
   """Imports ops from collections."""
   if self._is_training:
     self._train_op = tf.get_collection_ref("train_op")[0]
     self._lr = tf.get_collection_ref("lr")[0]
     self._new_lr = tf.get_collection_ref("new_lr")[0]
     self._lr_update = tf.get_collection_ref("lr_update")[0]
     rnn_params = tf.get_collection_ref("rnn_params")
     
     if self._cell and rnn_params:
       params_saveable = tf.contrib.cudnn_rnn.CudnnLSTMSaveable(
           rnn_params,
           config.num_layers,
           config.hidden_size,
           config.hidden_size,
           scope="Model/RNN")
       tf.add_to_collection(tf.GraphKeys.SAVEABLE_OBJECTS, params_saveable)
   
   self._cost = tf.get_collection_ref(util.with_prefix(self._name, "cost"))[0]
   num_replicas = FLAGS.num_gpus if self._name == "Train" else 1
   self._initial_state = util.import_state_tuples(
       self._initial_state, self._initial_state_name, num_replicas)
   self._final_state = util.import_state_tuples(
       self._final_state, self._final_state_name, num_replicas)
    def export_ops(self, name):
        """Exports ops to collections."""
        self._name = name
        ops = {
            util.with_prefix(self._name, "cost"): self._cost,
            util.with_prefix(self._name, "kl_div"): self._kl_loss,
            util.with_prefix(self._name, "input_data"): self._input_data,
            util.with_prefix(self._name, "output"): self._output,
            util.with_prefix(self._name, "targets"): self._targets,
        }

        if self._is_training:
            ops.update(lr=self._lr,
                       new_lr=self._new_lr,
                       lr_update=self._lr_update)

        for name, op in ops.items():
            tf.add_to_collection(name, op)

        self._initial_state_name = util.with_prefix(self._name, "initial")
        self._final_state_name = util.with_prefix(self._name, "final")
        util.export_state_tuples(self._initial_state, self._initial_state_name)
        util.export_state_tuples(self._final_state, self._final_state_name)
Example #16
0
    def __init__(self, is_training, config, input_, name=None):
        self._is_training = is_training
        if name:
            self._name = name
            self._initial_state_name = util.with_prefix(self._name, "initial")
            self._final_state_name = util.with_prefix(self._name, "final")
        self._input = input_
        self._rnn_params = None
        self._cell = None
        self.batch_size = input_.batch_size
        self.num_steps = input_.num_steps
        size = config.hidden_size
        vocab_size = config.vocab_size

        if not is_training:
            self.x = tf.placeholder(tf.int32, shape=[1, 1])
            self.y = tf.placeholder(tf.int32, shape=[1, 1])
            with tf.device("/cpu:0"):
                embedding = tf.get_variable("embedding", [vocab_size, size],
                                            dtype=data_type())
                inputs = tf.nn.embedding_lookup(embedding, self.x)
        else:
            with tf.device("/cpu:0"):
                embedding = tf.get_variable("embedding", [vocab_size, size],
                                            dtype=data_type())
                inputs = tf.nn.embedding_lookup(embedding, input_.input_data)

        if is_training and config.keep_prob < 1:
            inputs = tf.nn.dropout(inputs, config.keep_prob)

        output, state = self._build_rnn_graph(inputs, config, is_training)

        softmax_w = tf.get_variable("softmax_w", [size, vocab_size],
                                    dtype=data_type())
        softmax_b = tf.get_variable("softmax_b", [vocab_size],
                                    dtype=data_type())
        logits = tf.nn.xw_plus_b(output, softmax_w, softmax_b)
        # Reshape logits to be a 3-D tensor for sequence loss
        logits = tf.reshape(logits,
                            [self.batch_size, self.num_steps, vocab_size])
        #tmp = tf.reduce_sum(logits,1)
        #self._logits = tf.nn.softmax(tmp, name="LOGITS")

        #if not is_training:
        #  self._cost = tf.constant(0.0)
        #  self._final_state = state
        #  return

        if is_training:
            # Use the contrib sequence loss and average over the batches
            loss = tf.contrib.seq2seq.sequence_loss(
                logits,
                input_.targets,
                tf.ones([self.batch_size, self.num_steps], dtype=data_type()),
                average_across_timesteps=False,
                average_across_batch=True)
        else:
            # Use the contrib sequence loss and average over the batches
            loss = tf.contrib.seq2seq.sequence_loss(
                logits,
                self.y,
                tf.ones([self.batch_size, self.num_steps], dtype=data_type()),
                average_across_timesteps=False,
                average_across_batch=True)

        # Update the cost
        self._cost = tf.reduce_sum(loss)
        self._final_state = state

        if not is_training:
            return

        self._lr = tf.Variable(0.0, trainable=False)
        tvars = tf.trainable_variables()
        grads, _ = tf.clip_by_global_norm(tf.gradients(self._cost, tvars),
                                          config.max_grad_norm)
        optimizer = tf.train.GradientDescentOptimizer(self._lr)
        self._train_op = optimizer.apply_gradients(
            zip(grads, tvars),
            global_step=tf.contrib.framework.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)
Example #17
0
from __future__ import absolute_import