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))
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))
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))