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 __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))
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))