コード例 #1
0
def test():
    print("  >> Loading preprocessing data...", "\n")
    parameters, data_info = load_preprocessing()

    print("  >> Loading Test Dataset...", "\n")
    TF_IDF_Feature_Matrix, target_idx_list = data_info.read_student_feature(parameters['dataset_testset'])
    test_idx, test_target_idx = data_info.make_data(target_idx_list, TF_IDF_Feature_Matrix, is_test = True)
    test_data = data_helpers.batch_construction(test_target_idx, test_idx)

    session_conf = tf.ConfigProto()
    session_conf.gpu_options.allow_growth = True
    with tf.Session(config=session_conf) as sess:
        Model = load_model(sess, parameters, data_info)

        test_input_indices, test_target_indices, test_target_origin =\
            data_helpers.get_minibatch(dataset=test_data,\
                                       minibatch_seq=np.arange(len(test_data)),\
                                       is_test = True)

        feed_dict = {
            Model.X: test_input_indices,\
            Model.Y: test_target_indices
        }

        test_logits = sess.run([Model.softmax_output], feed_dict=feed_dict)

        # Save the output of softmax layer
        np.savetxt(fname=parameters['output_path'], X=test_logits[0], \
                   fmt='%.10f', delimiter = '\t')

        np.savetxt(fname='answer.txt', X=test_target_indices, fmt='%d')

        print("  >> End of Test...")
        print("  >> Check 'output.txt' and 'answer.txt' file...")
        print("")
コード例 #2
0
ファイル: train.py プロジェクト: Hgeonsu/Text_Classification
def valid_check(current_session, valid_data, Model):
    valid_input_indices, valid_target_indices = data_helpers.get_minibatch( \
        dataset=valid_data, \
        minibatch_seq=np.arange(len(valid_data)))

    feed_dict = {
        Model.X: valid_input_indices, \
        Model.Y: valid_target_indices
    }

    valid_pred, valid_loss, valid_accuracy = current_session.run([Model.prediction, Model.loss, Model.accuracy], \
                                                      feed_dict=feed_dict)

    return valid_pred, valid_loss, valid_accuracy
コード例 #3
0
ファイル: train.py プロジェクト: Hgeonsu/Text_Classification
def train():
    print("  >> Loading preprocessing information...", "\n")
    parameters, data_info = load_preprocessing()

    print("  >> Loading Train Data...", "\n")
    train_data = data_info.train_data
    valid_data = data_info.valid_data

    valid_loss_history = []
    valid_acc_history = []
    train_loss_history = []
    train_acc_history = []

    bad_counter = 0
    previous_min_valid_loss = 1000

    session_conf = tf.ConfigProto()
    session_conf.gpu_options.allow_growth = True
    with tf.Session(config=session_conf) as sess:
        Model = create_model(sess, parameters, data_info)

        if Model.global_epoch_step.eval() + 1 > parameters['n_epoch']:
            print("  >> Current Epoch: {}, Max Epoch: {}".format(
                Model.global_epoch_step.eval(), parameters['n_epoch']))
            print("  >> End of Training....")
            #exit(-1)
            return

        for epoch_idx in range(parameters['n_epoch']):
            try:
                batches = data_helpers.batch_iter(parameters, train_data)
                for minibatch in batches:
                    #print (minibatch)
                    input_indices, target_indices = data_helpers.get_minibatch(\
                            dataset = train_data,\
                            minibatch_seq = minibatch)

                    feed_dict = {
                        Model.X     :   input_indices,\
                        Model.Y     :   target_indices}

                    #   Training model......
                    _, global_step, minibatch_loss, minibatch_accuracy = sess.run(\
                        [Model.train_op, Model.global_step, Model.loss, Model.accuracy], feed_dict)

                    #   Validation Check
                    if (global_step + 1) % parameters['evaluation_every'] == 0:

                        #Validation Set
                        valid_pred, valid_loss, valid_accuracy = valid_check(current_session = sess,\
                                                                            valid_data = valid_data,\
                                                                            Model = Model)

                        # 매 "evaluation_every" step마다 train의 결과를 저장!!!
                        train_loss_history.append(minibatch_loss)
                        train_acc_history.append(minibatch_accuracy)
                        valid_loss_history.append(valid_loss)
                        valid_acc_history.append(valid_accuracy)

                        print("")
                        print("  >> Global_Step # {} at {}-epoch".format(
                            global_step, Model.global_epoch_step.eval()))
                        print(
                            "        - Train Loss (Validation_Loss) : {:,.2f} ({:,.2f})"
                            .format(minibatch_loss, valid_loss))
                        print(
                            "        - Train Accuracy (Validation Accuracy) : {:,.2f} ({:.2f})"
                            .format(minibatch_accuracy, valid_accuracy))
                        print("")

                        if valid_loss <= previous_min_valid_loss:
                            bad_counter = 0
                            previous_min_valid_loss = valid_loss

                            #save the model checkpoint
                            checkpoint_path = os.path.join(
                                os.path.join(parameters['save_dir'],
                                             parameters['model_name']), 'ckpt')
                            saver = tf.train.Saver()
                            saver.save(sess, checkpoint_path, global_step)
                            print(
                                "  >> Saving the current model with loss {:,.2f} at {}"
                                .format(valid_loss, checkpoint_path))
                            print("")

                        else:
                            bad_counter += 1

                        # Early Stopping
                        if bad_counter > parameters['patience']:
                            print("  >> EARLY STOPPING with bad_counter {}".
                                  format(bad_counter))
                            print("  >> Training Process Terminated....")
                            #exit(-1)
                            return

                Model.global_epoch_step_op.eval()  #Increment Global_epoch_step

            except KeyboardInterrupt:
                print("  >> Interrupted by user at {}-epoch, {}-global_step".
                      format(Model.global_epoch_step.eval(), global_step))
                # save the model checkpoint
                saver = tf.train.Saver()
                checkpoint_path = os.path.join(parameters['save_dir'],
                                               parameters['model_name'])
                saver.save(sess, checkpoint_path, global_step)
                print("     - Saving the model with {}-epoch in {}".format(
                    Model.global_epoch_step.eval(), checkpoint_path))
                print("     - Training Process Terminated....")
                #exit(-1)
                return

        print("  >> Save the last model...")
        saver = tf.train.Saver()
        checkpoint_path = os.path.join(parameters['save_dir'], 'MLP.ckpt')
        saver.save(sess, checkpoint_path, global_step=global_step)

    print("  >> End of Training...")
    print("")
    print("")
コード例 #4
0
def train():
    print("  >> Loading preprocessing information...", "\n")
    parameters, data_info = load_preprocessing()

    print("  >> Loading Train Data...", "\n")
    train_data = data_info.train_data

    train_loss_history = []
    train_acc_history = []

    session_conf = tf.ConfigProto()
    session_conf.gpu_options.allow_growth = True
    with tf.Session(config=session_conf) as sess:
        Model = create_model(sess, parameters, data_info)

        if Model.global_epoch_step.eval() + 1 > parameters['n_epoch']:
            print("  >> Current Epoch: {}, Max Epoch: {}".format(
                Model.global_epoch_step.eval(), parameters['n_epoch']))
            print("  >> End of Training....")
            exit(-1)

        for epoch_idx in range(parameters['n_epoch']):
            try:
                batches = data_helpers.batch_iter(parameters, train_data)
                for minibatch in batches:
                    #print (minibatch)
                    input_indices, target_indices = data_helpers.get_minibatch(\
                            dataset = train_data,\
                            minibatch_seq = minibatch)

                    feed_dict = {
                        Model.X     :   input_indices,\
                        Model.Y     :   target_indices}

                    #   Training model......
                    _, global_step, minibatch_loss, minibatch_accuracy = sess.run(\
                        [Model.train_op, Model.global_step, Model.loss, Model.accuracy], feed_dict)

                    #   Check Training Process
                    if (global_step + 1) % parameters['evaluation_every'] == 0:

                        # 매 "evaluation_every" step마다 train의 결과를 저장!!!
                        train_loss_history.append(minibatch_loss)
                        train_acc_history.append(minibatch_accuracy)

                        print("  >> Global_Step # {} at {}-epoch".format(
                            global_step, Model.global_epoch_step.eval()))
                        print("        - Train Loss    : {:,.2f}".format(
                            minibatch_loss))
                        print("        - Train Accuracy: {:,.2f}".format(
                            minibatch_accuracy))
                        print("")

                Model.global_epoch_step_op.eval()  #Increment Global_epoch_step

            except KeyboardInterrupt:
                print("     - Training Process Terminated....")
                exit(-1)

        print("  >> Save the last model...")
        saver = tf.train.Saver()
        checkpoint_path = os.path.join(parameters['save_dir'], 'MLP.ckpt')
        saver.save(sess, checkpoint_path, global_step=global_step)

    print("  >> End of Training...")
    print("")
    print("")