Esempio n. 1
0
def evaluate_test():
    test = pd.read_csv(Config.test_data_path, sep='\t')
    test_labels = test.label.values
    test_labels = to_categorical(test_labels)
    test_pro_cnn = pickle.load(open(Config.cache_dir + '/probe/cnn/test/2.pk', 'rb'))
    test_pro_rnn = pickle.load(open(Config.cache_dir + '/probe/rnn/test/2.pk', 'rb'))
    test_pro_rcnn = pickle.load(open(Config.cache_dir + '/probe/rcnn/test/1.pk', 'rb'))
    test_pro_deep_cnn = pickle.load(open(Config.cache_dir+'/probe/deep_cnn/test/0.pk', 'rb'))
    test_pro_word_rcnn_char_rnn = pickle.load(open(Config.cache_dir + '/probe/word_rcnn_char_rnn/test/2.pk', 'rb'))
    test_pro_word_rnn_char_rcnn = pickle.load(open(Config.cache_dir + '/probe/word_rnn_char_rcnn/test/2.pk', 'rb'))
    test_pro_word_char_cgru = pickle.load(open(Config.cache_dir + '/probe/word_char_cgru/test/1.pk', 'rb'))
    test_pro_word_rcnn_char_cgru = pickle.load(open(Config.cache_dir + '/probe/word_rcnn_char_cgru/test/1.pk', 'rb')) # best: 0
    test_pro_word_cgru_char_rnn = pickle.load(open(Config.cache_dir + '/probe/word_cgru_char_rnn/test/0.pk', 'rb'))
    test_pro_word_cgru_char_rcnn = pickle.load(open(Config.cache_dir + '/probe/word_cgru_char_rcnn/test/0.pk', 'rb'))
    test_pro_word_rnn_char_cgru = pickle.load(open(Config.cache_dir + '/probe/md/word_rnn_char_cgru/test/1.pk', 'rb'))
    test_pro_word_rnn_char_cnn = pickle.load(open(Config.cache_dir + '/probe/md/word_rnn_char_cnn/test/0.pk', 'rb'))

    test_pro = test_pro_cnn
    test_pro += test_pro_rnn
    test_pro += test_pro_rcnn
    test_pro += test_pro_deep_cnn
    test_pro += test_pro_word_rcnn_char_rnn
    test_pro += test_pro_word_rnn_char_rcnn
    test_pro += test_pro_word_char_cgru
    test_pro += test_pro_word_cgru_char_rcnn
    test_pro += test_pro_word_rcnn_char_cgru
    test_pro += test_pro_word_cgru_char_rnn
    test_pro += test_pro_word_rnn_char_cgru
    test_pro += test_pro_word_rnn_char_cnn

    pre, rec, f = score(test_pro, test_labels)
    print(pre)
    print(rec)
    print(f)
    print(np.mean(f))
Esempio n. 2
0
best_f1 = 0
for i in range(25):
    print('---------------------EPOCH------------------------')
    print(i)
    print('best_f1 ' + ' >>> ' + str(best_f1))
    if best_f1 > 0.68:
        K.set_value(model.optimizer.lr, 0.0001)
    if best_f1 > 0.69:
        for l in trainable_layer:
            model.get_layer(l).trainable = True

    model.fit_generator(
        train_batch_generator(x_train, y_train, batch_size=batch_size),
        epochs=1,
        steps_per_epoch=int(x_train.shape[0] / batch_size),
        validation_data=(x_val, y_val),
        class_weight=cw,
    )
    if i < 30:
        pred = np.squeeze(model.predict(x_val))
        pre, rec, f1 = score(pred, y_val)
        # print (myAcc(pred,y_val))
        print("precision", pre)
        # print("recall", rec)
        print("f1_score", f1)

        if (f1 > 0.70 and float(f1) > best_f1):
            print('saving model (。・`ω´・) ')
            best_f1 = f1

            # model.save(Config.cache_dir + '/rcnn/dp_embed_%s_epoch_%s_%s.h5'%(model_name, i, f1))
Esempio n. 3
0
val_seq = [val_word_seq, val_char_seq]

print("Load Word && Char Embed")
word_embed_weight = pickle.load(open(Config.word_embed_path, "rb"))
char_embed_weight = pickle.load(open(Config.char_embed_path, "rb"))

model = get_word_rnn_char_cgru(Config.word_seq_maxlen, Config.char_seq_maxlen,
                               word_embed_weight, char_embed_weight)
from keras.utils.vis_utils import plot_model
plot_model(model, to_file=model_name + '.png', show_shapes=True)

for i in range(15):
    if i == 6:
        K.set_value(model.optimizer.lr, 0.0001)
    if i == 10:
        for l in trainable_layer:
            model.get_layer(l).trainable = True
    model.fit_generator(train_batch_generator(train.content.values,
                                              train.label.values,
                                              batch_size=batch_size),
                        epochs=1,
                        steps_per_epoch=int(train.shape[0] / batch_size),
                        validation_data=(val_seq, val_label))
    pred = np.squeeze(model.predict(val_seq))
    pre, rec, f1 = score(pred, val_label)
    print("precision", pre)
    print("recall", rec)
    print("f1_score", f1)
    model.save(Config.cache_dir +
               "/word_rnn_char_cgru/dp_embed_%s_epoch_%s_%s.h5" %
               (model_name, i, f1))