# Training
    if parameter["mode"] == "train":
        train_data = data_loader(parameter["input_dir"])
        train_loader.make_input_data(train_data)
        test_data = data_loader(parameter["input_dir"])
        test_loader.make_input_data(test_data)

        for epoch in range(parameter["epochs"]):
            # Training
            avg_cost, avg_correct, precision_count, recall_count, e_avg_correct, e_precision_count, e_recall_count = iteration_model(models, train_loader, parameter)
            # Individual and ensemble model's accuracy score
            for i in range(parameter["num_ensemble"]):
                print(str(i) + '_[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(epoch + 1, avg_cost[i], avg_correct[i]))
            print('Ensemble [Epoch: {:>4}]  Accuracy = {:>.6}'.format(epoch + 1, e_avg_correct))
            f1Measure, precision, recall = calculation_measure(parameter["num_ensemble"], precision_count, recall_count)

            # Individual and ensemble model's f1, precision and recall
            e_f1Measure, e_precision, e_recall = calculation_measure_ensemble(e_precision_count, e_recall_count)
            for i in range(parameter["num_ensemble"]):
                print(str(i) + '_[Train] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'.format(f1Measure[i], precision[i], recall[i]))
            print('Ensemble [Train] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'.format(e_f1Measure, e_precision, e_recall))
            print('='*100)

            # Inference validation / test set
            avg_cost, avg_correct, precision_count, recall_count, e_avg_correct, e_precision_count, e_recall_count = iteration_model(models, test_loader, parameter, False)
            # Individual and ensemble model's accuracy score on validation or test dataset
            for i in range(parameter["num_ensemble"]):
                print(str(i) + '_Val : [Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(epoch + 1, avg_cost[i], avg_correct[i]))
            print('Ensemble [Epoch: {:>4}]  Accuracy = {:>.6}'.format(epoch + 1, e_avg_correct))
            f1Measure, precision, recall = calculation_measure(parameter["num_ensemble"], precision_count, recall_count)
Esempio n. 2
0
        # dataset.make_input_data(train_extern_data)
        dev_dataset.make_input_data(dev_extern_data)  # For Dev set

        best_dev_f1 = 0
        cur_patience = 0
        # use_lr_decay = False

        for epoch in range(parameter["epochs"]):
            random.shuffle(train_extern_data)  # 항상 train set shuffle 시켜주자
            dataset.make_input_data(train_extern_data)

            avg_cost, avg_correct, precision_count, recall_count = iteration_model(
                model, dataset, parameter)
            print('[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(
                epoch + 1, avg_cost, avg_correct))
            f1Measure, precision, recall = calculation_measure(
                precision_count, recall_count)
            print(
                '[Train] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'
                .format(f1Measure, precision, recall))

            # Check for dev set
            de_avg_cost, de_avg_correct, de_precision_count, de_recall_count = iteration_model(
                model, dev_dataset, parameter, train=False)
            print('[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(
                epoch + 1, de_avg_cost, de_avg_correct))
            de_f1Measure, de_precision, de_recall = calculation_measure(
                de_precision_count, de_recall_count)
            print(
                '[Dev] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'.
                format(de_f1Measure, de_precision, de_recall))
Esempio n. 3
0
    bind_model(sess)
    if parameter["pause"] == 1:
        nsml.paused(scope=locals())

    # 학습
    if parameter["mode"] == "train":
        extern_data = data_loader(DATASET_PATH)
        dataset.make_input_data(extern_data)
        for epoch in range(parameter["epochs"]):
            [tr_avg_cost, tr_acc, tr_precision_cnt, tr_recall_cnt, tr_step], \
            [te_avg_cost, te_acc, te_precision_cnt, te_recall_cnt, te_step] = iteration_model(model, dataset, parameter)

            print('[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(
                epoch + 1, tr_avg_cost, tr_acc))

            tr_f1Measure, tr_precision, tr_recall = calculation_measure(
                tr_precision_cnt, tr_recall_cnt)
            print(
                '[Train] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'
                .format(tr_f1Measure, tr_precision, tr_recall))

            te_f1Measure, te_precision, te_recall = calculation_measure(
                te_precision_cnt, te_recall_cnt)
            print(
                '[Valid] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'
                .format(te_f1Measure, te_precision, te_recall))

            nsml.report(summary=True,
                        scope=locals(),
                        tr__loss=tr_avg_cost,
                        tr__f1=tr_f1Measure,
                        te__f1=te_f1Measure,
Esempio n. 4
0
    model.build_model()

    # tensorflow session 생성 및 초기화
    sess = tf.Session()
    sess.run(tf.global_variables_initializer())

    # DO NOT CHANGE
    bind_model(sess)
    if parameter["pause"] == 1:
        nsml.paused(scope=locals())

    # 학습
    if parameter["mode"] == "train":
        extern_data = data_loader(DATASET_PATH)  # extern_data
        dataset.make_input_data(extern_data)
        for epoch in range(parameter["epochs"]):
            avg_cost, avg_correct, precision_count, recall_count = iteration_model(
                model, dataset, parameter)
            print('[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(
                epoch + 1, avg_cost, avg_correct))
            f1Measure, precision, recall = calculation_measure(
                precision_count, recall_count)
            print(
                '[Train] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'
                .format(f1Measure, precision, recall))
            nsml.report(summary=True,
                        scope=locals(),
                        train__loss=avg_cost,
                        step=epoch)
            nsml.save(epoch)
Esempio n. 5
0
def NER_test():
    tf.reset_default_graph()
    config = Config()
    parser = argparse.ArgumentParser(description=sys.argv[0] + " description")
    parser = config.parse_arg(parser)
    print("[NER_test...]")

    try:
        parameter = vars(parser.parse_args())
    except:
        parser.print_help()
        sys.exit(0)

    parameter["mode"] = "test"

    # data_loader를 이용해서 전체 데이터셋 가져옴
    DATASET_PATH = './data'  #test data path

    extern_data = []

    if parameter["mode"] == "test":
        extern_data = test_data_loader(DATASET_PATH)
    # 가져온 문장별 데이터셋을 이용해서 각종 정보 및 학습셋 구성

    dataset = Dataset(parameter, extern_data)
    # dev_dataset = Dataset(parameter, extern_data)
    # # Model 불러오기
    #     # if parameter["use_conv_model"]:
    #     #     model = ConvModel(dataset.parameter)
    #     #     print("[Use Conv with lstm...]")
    #     # else:
    #     #     model = Model(dataset.parameter)
    #     #     print("[Use original lstm...]")
    #     # #
    #     # # model.build_model_test()

    dev_size = config.dev_size
    #train_extern_data, dev_extern_data = extern_data[:-dev_size], extern_data[-dev_size:]
    # dataset.make_input_data(train_extern_data)
    #dev_dataset.make_input_data(extern_data)  # For Test set

    best_dev_f1 = 0
    cur_patience = 0
    # use_lr_decay = False

    with tf.Session() as sess:

        saver = tf.train.import_meta_graph('./saved/testmodel.meta')
        saver.restore(sess, tf.train.latest_checkpoint('./saved/'))
        graph = tf.get_default_graph()
        # print all tensors in checkpoint file
        #chkp.print_tensors_in_checkpoint_file("./saved/checkpoint.ckpt", tensor_name='', all_tensors=True)

        # placeholder
        param = {}
        param["morph"] = graph.get_tensor_by_name('morph')
        param["ne_dict"] = graph.get_tensor_by_name('ne_dict')
        param["character"] = graph.get_tensor_by_name('character')
        param["dropout_rate"] = graph.get_tensor_by_name('dropout_rate')
        param["weight_dropout_keep_prob"] = graph.get_tensor_by_name(
            'weight_dropout_keep_prob')
        param["lstm_dropout"] = graph.get_tensor_by_name('lstm_dropout')
        param["label"] = graph.get_tensor_by_name('label')
        param["sequence"] = graph.get_tensor_by_name('sequence')
        param["character_len"] = graph.get_tensor_by_name('character_len')
        param["global_step"] = graph.get_tensor_by_name('global_step')
        param["emb_dropout_keep_prob"] = graph.get_tensor_by_name(
            'emb_dropout_keep_prob')
        param["dense_dropout_keep_prob"] = graph.get_tensor_by_name(
            'dense_dropout_keep_prob')
        param["learning_rate"] = graph.get_tensor_by_name('learning_rate')

        #tensor   model.cost, model.viterbi_sequence, model.train_op
        param["cost"] = graph.get_tensor_by_name('cost')
        param["viterbi_sequence"] = graph.get_tensor_by_name(
            'viterbi_sequence')
        param["train_op"] = graph.get_tensor_by_name('train_op')

        #for epoch in range(parameter["epochs"]):
        #random.shuffle(extern_data)  # 항상 train set shuffle 시켜주자
        dataset.make_input_data(extern_data)

        # Check for test set
        de_avg_cost, de_avg_correct, de_precision_count, de_recall_count = iteration_model_Test(
            dataset, parameter, param, train=False)
        print('[Epoch: {:>4}] cost = {:>.6} Accuracy = {:>.6}'.format(
            epoch + 1, de_avg_cost, de_avg_correct))
        de_f1Measure, de_precision, de_recall = calculation_measure(
            de_precision_count, de_recall_count)
        print('[Test] F1Measure : {:.6f} Precision : {:.6f} Recall : {:.6f}'.
              format(de_f1Measure, de_precision, de_recall))