Пример #1
0
model = TextCNN(config)
model.build()
sess_config = tf.ConfigProto()
sess_config.gpu_options.allow_growth = True
sess_config.gpu_options.per_process_gpu_memory_fraction = 0.9
sess = tf.Session(config=sess_config)
init = tf.global_variables_initializer()
sess.run(init)
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
if ckpt and tf.train.get_checkpoint_state(checkpoint_dir):
    model.restore(sess, ckpt.model_checkpoint_path)
else:
    print("no checkpoint saved")
    exit()
test_data = list(zip(test_docs, seq_len, test_labels))
batches = data_util.batch_loader(test_data, 32)
total_preds = []
for batch in batches:
    batch_docs, batch_seq_len, batch_labels = zip(*batch)
    preds = model.predict(sess, batch_docs, batch_seq_len)
    total_preds = np.concatenate([total_preds, preds], axis=0)
test_acc = np.mean(total_preds == test_labels)
rmse = np.mean(np.square(total_preds - test_labels), axis=0)
rmse = np.sqrt(rmse)
print("test accuracy : {}".format(test_acc))
print(rmse)
reviews = open(test_data_file, "r", encoding="utf-8").readlines()
reviews = list(map(lambda x: x.strip().replace("</s>", ""), reviews))
result = np.column_stack((total_preds, test_labels, reviews))
with open(result_file, "w", encoding="utf-8") as f:
    fw = csv.writer(f)
Пример #2
0
     model.embedding_matrix.assign(pretrained_embedding)
     del pretrained_embedding
 ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
 if ckpt and tf.train.checkpoint_exists(ckpt.model_checkpoint_path):
     print("Reload model paramters")
     model.restore(sess, ckpt.model_checkpoint_path)
 else:
     if not os.path.exists(checkpoint_dir):
         os.makedirs(checkpoint_dir)
     print("create new model parameter")
     sess.run(tf.global_variables_initializer())
 step = None
 best_loss = 1e10
 no_improv = 0
 for epoch in range(num_epochs):
     batches = batch_loader(list(zip(docs, sums)), batch_size)
     dev_batches = batch_loader(list(zip(dev_docs, dev_sums)), batch_size)
     for batch in batches:
         batch_source, batch_target = zip(*batch)
         batch_encoder_input, batch_encoder_len, \
         batch_decoder_input, batch_decoder_len = \
             make_array_format(batch_source, batch_target)
         batch_loss, summary_op = model.train(
             sess,
             encoder_inputs=batch_encoder_input,
             encoder_length=batch_encoder_len,
             decoder_inputs=batch_decoder_input,
             decoder_length=batch_decoder_len,
             dropout=dropout)
         step = model.global_step.eval(sess)
         print("epoch : {} step : {}, loss : {}".format(
Пример #3
0
sess.run(init)
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
if ckpt and tf.train.checkpoint_exists(ckpt.model_checkpoint_path):
    print("reload model")
    model.restore(sess, ckpt.model_checkpoint_path)
else:
    print("start from scratch")
    if not os.path.exists(checkpoint_dir):
        os.makedirs(checkpoint_dir)

print("start training")
best_acc = 0
for i in range(config.num_epochs):
    epoch = i + 1
    train_data = list(zip(train_docs, train_seq_len, train_labels))
    batches = data_util.batch_loader(train_data, batch_size, shuffle=True)
    for batch in batches:
        batch_docs, batch_seq_len, batch_labels = zip(*batch)
        step, loss, acc, rmse = model.train(sess, batch_docs, batch_seq_len,
                                            batch_labels, config.dropout)
        print("epoch: {}, loss: {}, acc: {}".format(epoch, loss, acc))
    del train_data
    dev_data = list(zip(dev_docs, dev_seq_len, dev_labels))
    dev_batches = data_util.batch_loader(dev_data, batch_size)
    total_preds = []
    for dev_batch in dev_batches:
        batch_docs, batch_seq_len, batch_labels = zip(*dev_batch)
        preds = model.predict(sess, batch_docs, batch_seq_len, dropout=1.0)
        total_preds = np.concatenate([total_preds, preds], axis=0)
    dev_acc = np.mean(total_preds == dev_labels)
    print("dev accuracy : {}".format(dev_acc))
Пример #4
0
                       state_size=state_size,
                       decoder_vocab_size=max_vocab_size,
                       filter_width=filter_width,
                       zoneout=zoneout,
                       attention_hidden_size=attention_hidden_size,
                       mode=mode,
                       beam_depth=beam_depth,
                       learning_rate=learning_rate,
                       max_iter=summary_len)
 ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
 if ckpt and tf.train.checkpoint_exists(ckpt.model_checkpoint_path):
     print("Reload model parameters")
     model.restore(sess, ckpt.model_checkpoint_path)
 else:
     exit()
 batches = data_util.batch_loader(docs, batch_size)
 fw = open(summary_file, "w", encoding="utf-8")
 for idx, batch in enumerate(batches):
     batch_encoder_input, batch_encoder_len = data_util.make_array_format(
         batch)
     # if BeamSearchDecoder : [batch, max_time_step, beam_Depth]
     batch_summaries = model.predict(sess, batch_encoder_input,
                                     batch_encoder_len)
     # iterate every example, get best beam search result
     for summary in batch_summaries:
         best_summary = summary[:, 0]
         # convert indices to corresponding tokens
         summary_tokens = data_util.map_idx2tok(best_summary, vocab)
         # remove EOS token
         try:
             stop_index = summary_tokens.index(data_util.ID_EOS)
Пример #5
0
def main():
    config = Config()
    vocab = Vocab(config.dict_file)
    tq, tc, q, c, a_s, a_t = load_data(config.train_query_file,
                                       config.train_context_file,
                                       config.train_tables_file,
                                       config.train_answer_file, vocab,
                                       config.debug)
    #dev_q, dev_c, dev_s, dev_a_s, dev_a_t = load_data(config.dev_query_file, config.dev_context_file, config.dev_tables_file, config.dev_answer_file, vocab, config.debug)
    max_q_len = max_len(q)
    max_c_len = max_len(c)
    max_a_len = max_len(a_s)
    train_data = list(zip(tq, tc, q, c, a_s, a_t))
    #dev_data = list(zip(dev_q, dev_c, dev_s, dev_a_s, dev_a_t))
    wiki = Wiki(config)
    wiki.build_model()
    best_score = 0
    print("start")
    for i in range(config.num_epochs):
        epoch = i + 1
        print(epoch)
        batches = batch_loader(train_data, config.batch_size, shuffle=False)
        for batch in batches:
            batch_tq, batch_tc, batch_q, batch_c, batch_a_s, batch_a_t = zip(
                *batch)
            question_lengths, padded_q = zero_padding(batch_q, max_q_len)
            context_lengths, padded_c = zero_padding(batch_c, max_c_len)
            answer_start_lengths, padded_a_s = zero_padding(
                batch_a_s, max_a_len)
            # loss, acc, pred, step = wiki.train(padded_q, question_lengths, padded_c, context_lengths,
            #                                     padded_a_s, answer_start_lengths, config.dropout)
            loss, step = wiki.train(padded_q, question_lengths, padded_c,
                                    context_lengths, padded_a_s, batch_a_t,
                                    answer_start_lengths, max_q_len, max_c_len,
                                    max_a_len, config.dropout)
            # train_batch_acc, train_batch_em, train_batch_loss = wiki.eval(padded_q, question_lengths, padded_c,
            #                                                                context_lengths,
            #                                                                padded_s, sequence_lengths,
            #                                                                sentence_lengths, batch_s_idx,
            #                                                                batch_ans, batch_spans)
            train_batch_loss = wiki.eval(padded_q, question_lengths, padded_c,
                                         context_lengths, padded_a_s,
                                         batch_a_t, answer_start_lengths,
                                         max_q_len, max_c_len, max_a_len,
                                         config.dropout)
            print(loss)
            print(train_batch_loss)
            print("done")

            # dev_em = np.mean(total_em)
            # dev_acc = np.mean(total_acc)
            # dev_loss = np.mean(total_loss)
            # wiki.write_summary(dev_acc, dev_em, dev_loss, mode="dev")
            # wiki.write_summary(train_batch_acc, train_batch_em, train_batch_loss, mode="train")
            # print("after %d step, dev_em:%.2f" % (step, dev_em))
            # if dev_em > best_score:
            #     best_score = dev_em
            #     print("new score! em: %.2f, acc:%.2f" % (dev_em, dev_acc))
            #     wiki.save_session(config.dir_model)

    print("end")