def train(data_dir, checkpoint_path, config): """Trains the model with the given data Args: data_dir: path to the data for the model (see data_utils for data format) checkpoint_path: the path to save the trained model checkpoints config: one of the above configs that specify the model and how it should be run and trained Returns: None """ # Prepare Name data. print("Reading Name data in %s" % data_dir) names, counts = data_utils.read_names(data_dir) with tf.Graph().as_default(), tf.Session() as session: initializer = tf.random_uniform_initializer(-config.init_scale, config.init_scale) with tf.variable_scope("model", reuse=None, initializer=initializer): m = NamignizerModel(is_training=True, config=config) tf.global_variables_initializer().run() for i in range(config.max_max_epoch): lr_decay = config.lr_decay ** max(i - config.max_epoch, 0.0) m.assign_lr(session, config.learning_rate * lr_decay) print("Epoch: %d Learning rate: %.3f" % (i + 1, session.run(m.lr))) train_perplexity = run_epoch(session, m, names, counts, config.epoch_size, m.train_op, verbose=True) print("Epoch: %d Train Perplexity: %.3f" % (i + 1, train_perplexity)) m.saver.save(session, checkpoint_path, global_step=i)
def train(data_dir, checkpoint_path, config): """Trains the model with the given data Args: data_dir: path to the data for the model (see data_utils for data format) checkpoint_path: the path to save the trained model checkpoints config: one of the above configs that specify the model and how it should be run and trained Returns: None """ # Prepare Name data. print("Reading Name data in %s" % data_dir) names, counts = data_utils.read_names(data_dir) model_path = os.environ["RESULT_DIR"]+"/model" with tf.Graph().as_default(), tf.Session() as session: initializer = tf.random_uniform_initializer(-config.init_scale, config.init_scale) with tf.variable_scope("model", reuse=None, initializer=initializer): m = NamignizerModel(is_training=True, config=config) tf.global_variables_initializer().run() for i in range(config.max_max_epoch): lr_decay = config.lr_decay ** max(i - config.max_epoch, 0.0) m.assign_lr(session, config.learning_rate * lr_decay) print("Epoch: %d Learning rate: %.3f" % (i + 1, session.run(m.lr))) train_perplexity = run_epoch(session, m, names, counts, config.epoch_size, m.train_op, verbose=True) print("Epoch: %d Train Perplexity: %.3f" % (i + 1, train_perplexity)) m.saver.save(session, os.environ["RESULT_DIR"] + "/model.ckpt", global_step=i) input_data = tf.saved_model.utils.build_tensor_info(m.input_data) target_data = tf.saved_model.utils.build_tensor_info(m.targets) weight_data = tf.saved_model.utils.build_tensor_info(m.weights) predict_outputs = tf.saved_model.utils.build_tensor_info(m.cost) prediction_signature = ( tf.saved_model.signature_def_utils.build_signature_def( inputs={ 'input_data' : input_data, 'target_data' : target_data, 'weight_data' : weight_data }, outputs={ tf.saved_model.signature_constants.PREDICT_INPUTS: predict_outputs }, method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME)) builder = tf.saved_model.builder.SavedModelBuilder(model_path) legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op') builder.add_meta_graph_and_variables( session, [tf.saved_model.tag_constants.SERVING], signature_def_map={ 'predict_images': prediction_signature, }, legacy_init_op=legacy_init_op) save_path = str(builder.save()) print("Model saved in file: %s" % save_path) os.system("(cd $RESULT_DIR/model;tar cvfz ../saved_model.tar.gz .)") print(str(os.listdir(os.environ["RESULT_DIR"]))) print(os.environ["RESULT_DIR"]) sys.stdout.flush()