print("going to restore checkpoint") #sess.run(tf.global_variables_initializer()) input_ids_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="input_ids") input_mask_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="input_mask") label_ids_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="label_ids") segment_ids_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="segment_ids") bert_config = modeling.BertConfig.from_json_file(FLAGS.bert_config_file) (total_loss, logits, trans, pred_ids) = create_model(bert_config, is_training, input_ids_p, input_mask_p, segment_ids_p, label_ids_p, num_labels, use_one_hot_embeddings) saver = tf.train.Saver() saver.restore(sess, tf.train.latest_checkpoint(FLAGS.output_dir)) tokenizer = tokenization.FullTokenizer(vocab_file=FLAGS.vocab_file, do_lower_case=FLAGS.do_lower_case) def predict_online(): """ do online prediction. each time make prediction for one instance. you can change to a batch if you want. :param line: a list. element is: [dummy_label,text_a,text_b]
id2label = {value: key for key, value in label2id.items()} with codecs.open(os.path.join(model_dir, 'label_list.pkl'), 'rb') as rf: label_list = pickle.load(rf) num_labels = len(label_list) + 1 graph = tf.get_default_graph() with graph.as_default(): print("going to restore checkpoint") #sess.run(tf.global_variables_initializer()) input_ids_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="input_ids") label_ids_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="label_ids") input_mask_p = tf.placeholder(tf.int32, [batch_size, FLAGS.max_seq_length], name="input_mask") bert_config = modeling.BertConfig.from_json_file(FLAGS.bert_config_file) (total_loss, logits, trans, pred_ids) = create_model( bert_config, is_training, input_ids_p, input_mask_p, label_ids_p, num_labels) saver = tf.train.Saver() saver.restore(sess, tf.train.latest_checkpoint(model_dir)) def predict_terminal(): """ do online prediction. each time make prediction for one instance. you can change to a batch if you want. :param line: a list. element is: [dummy_label,text_a,text_b] :return: """ def convert(line): feature = convert_single_example1(0, line, label_list, FLAGS.max_seq_length, tokenizer, 'p') input_ids = np.reshape([feature.input_ids],(batch_size, FLAGS.max_seq_length))