Example #1
0
 def __init__(self, config, model_name, vocab_path,
              ses_threads=2,
              gpu_memory_fraction=1.0):
   self.cu = CommonUtiler()
   self.config = copy.deepcopy(config)
   self.config.batch_size = 1
   self.model_path = None
   self.model_name = model_name
   self.flag_load_model = False
   self.vocab_path = vocab_path
   self.vocab, self.rev_vocab = self.cu.load_vocabulary(vocab_path)
   
   gpu_options = tf.GPUOptions(
       per_process_gpu_memory_fraction=gpu_memory_fraction)
   self.session = session = tf.Session(config=tf.ConfigProto(
       intra_op_parallelism_threads=ses_threads, 
       gpu_options=gpu_options))
   
   with tf.variable_scope("mRNNmodel", reuse=None):
     self.model_init = mRNNModel(
         is_training=False,
         num_steps=1, 
         config=self.config,
         model_name=self.model_name,
         flag_with_saver=True)
   
   with tf.variable_scope("mRNNmodel", reuse=True):
     self.model_cont = mRNNModel(
         is_training=False,
         num_steps=1, 
         config=self.config,
         model_name=self.model_name,
         flag_with_saver=False,
         flag_reset_state=True)
Example #2
0
    def __init__(self,
                 config,
                 model_name,
                 vocab_path,
                 ses_threads=2,
                 gpu_memory_fraction=1.0):
        self.cu = CommonUtiler()
        self.config = copy.deepcopy(config)
        self.config.batch_size = 1
        self.model_path = None
        self.model_name = model_name
        self.flag_load_model = False
        self.vocab_path = vocab_path
        self.vocab, self.rev_vocab = self.cu.load_vocabulary(vocab_path)

        gpu_options = tf.GPUOptions(
            per_process_gpu_memory_fraction=gpu_memory_fraction)
        self.session = session = tf.Session(config=tf.ConfigProto(
            intra_op_parallelism_threads=ses_threads, gpu_options=gpu_options))

        with tf.variable_scope("mRNNmodel", reuse=None):
            self.model_init = mRNNModel(is_training=False,
                                        num_steps=1,
                                        config=self.config,
                                        model_name=self.model_name,
                                        flag_with_saver=True)

        with tf.variable_scope("mRNNmodel", reuse=True):
            self.model_cont = mRNNModel(is_training=False,
                                        num_steps=1,
                                        config=self.config,
                                        model_name=self.model_name,
                                        flag_with_saver=False,
                                        flag_reset_state=True)
def main(unused_args):
  # Load model configuration
  cu = CommonUtiler()
  config_path = os.path.join('./model_conf', FLAGS.model_name + '.py')
  config = cu.load_config(config_path)

  # Start model training
  with tf.Graph().as_default(), tf.Session(config=tf.ConfigProto(
      intra_op_parallelism_threads=FLAGS.ses_threads)) as session:
    initializer = tf.random_uniform_initializer(-config.init_scale,
                                                config.init_scale)
    assert len(config.buckets) >= 1
    assert config.buckets[-1] == config.max_num_steps
    models = []
    with tf.variable_scope("mRNNmodel", reuse=None, initializer=initializer):
      m = mRNNModel(is_training=True,
          num_steps=config.buckets[0], 
          config=config,
          model_name=FLAGS.model_name,
          flag_with_saver=True,
          model_root=FLAGS.model_root)
      models.append(m)
      
    with tf.variable_scope("mRNNmodel", reuse=True):
      for bucket in config.buckets[1:]:
        m = mRNNModel(is_training=True, 
            num_steps=bucket, 
            config=config,
            model_name=FLAGS.model_name,
            model_root=FLAGS.model_root)
        models.append(m)
        
    hdlr = logging.FileHandler(os.path.join(m.model_dir, 'log.txt'))
    hdlr.setLevel(logging.INFO)
    hdlr.setFormatter(logging.Formatter(formatter_log))
    logger.addHandler(hdlr)
    
    if FLAGS.pre_trained_model_path:
      models[0].saver.restore(session, FLAGS.pre_trained_model_path)
      logger.info('Continue to train from %s', FLAGS.pre_trained_model_path)
    else:
      tf.initialize_all_variables().run()

    iters_done = 0
    data_provider = mRNNCocoBucketDataProvider(FLAGS.anno_files_path.split(':'),
        FLAGS.vocab_path, config.vocab_size, FLAGS.vf_dir, config.vf_size)
    for i in range(config.num_epoch):
      train_cost, iters_done = run_epoch(session, iters_done, config, models, 
          data_provider, verbose=True)
      logger.info("Train cost for epoch %d is %.3f" % (i, train_cost))
    
    # Save final copy of the model
    models[0].saver.save(session, os.path.join(m.variable_dir, 
        'model_%d.ckpt' % iters_done))
Example #4
0
def main(unused_args):
    # Load model configuration
    cu = CommonUtiler()
    config_path = os.path.join('./model_conf', FLAGS.model_name + '.py')
    config = cu.load_config(config_path)

    # Start model training
    with tf.Graph().as_default(), tf.Session(config=tf.ConfigProto(
            intra_op_parallelism_threads=FLAGS.ses_threads)) as session:
        initializer = tf.random_uniform_initializer(-config.init_scale,
                                                    config.init_scale)
        assert len(config.buckets) >= 1
        assert config.buckets[-1] == config.max_num_steps
        models = []
        with tf.variable_scope("mRNNmodel",
                               reuse=None,
                               initializer=initializer):
            m = mRNNModel(is_training=True,
                          num_steps=config.buckets[0],
                          config=config,
                          model_name=FLAGS.model_name,
                          flag_with_saver=True,
                          model_root=FLAGS.model_root)
            models.append(m)

        with tf.variable_scope("mRNNmodel", reuse=True):
            for bucket in config.buckets[1:]:
                m = mRNNModel(is_training=True,
                              num_steps=bucket,
                              config=config,
                              model_name=FLAGS.model_name,
                              model_root=FLAGS.model_root)
                models.append(m)

        hdlr = logging.FileHandler(os.path.join(m.model_dir, 'log.txt'))
        hdlr.setLevel(logging.INFO)
        hdlr.setFormatter(logging.Formatter(formatter_log))
        logger.addHandler(hdlr)

        if FLAGS.pre_trained_model_path:
            models[0].saver.restore(session, FLAGS.pre_trained_model_path)
            logger.info('Continue to train from %s',
                        FLAGS.pre_trained_model_path)
        else:
            tf.initialize_all_variables().run()

        iters_done = 0
        data_provider = mRNNCocoBucketDataProvider(
            FLAGS.anno_files_path.split(':'), FLAGS.vocab_path,
            config.vocab_size, FLAGS.vf_dir, config.vf_size)
        for i in range(config.num_epoch):
            train_cost, iters_done = run_epoch(session,
                                               iters_done,
                                               config,
                                               models,
                                               data_provider,
                                               verbose=True)
            logger.info("Train cost for epoch %d is %.3f" % (i, train_cost))

        # Save final copy of the model
        models[0].saver.save(
            session, os.path.join(m.variable_dir,
                                  'model_%d.ckpt' % iters_done))