def model_test(): hparams = create_or_load_hparams(hparams_file=HFILE, default_hparams=None) config = tf.ConfigProto(log_device_placement=hparams.log_device_placement, allow_soft_placement=hparams.allow_soft_placement) input_vocab = load_obj(ROOT_PATH, 'general_vocab') label_vocab = load_obj(ROOT_PATH, 'mpss_pl_vocab') with tf.Session(config=config) as sess: cnn = TextCNN(hparams=hparams, mode=tf.contrib.learn.ModeKeys.TRAIN, source_vocab_table=input_vocab, target_vocab_table=label_vocab, scope=None, extra_args=None) saver = tf.train.Saver(tf.global_variables(), max_to_keep=hparams.num_checkpoints) chpt = tf.train.latest_checkpoint(hparams.restore_checkpoint) if chpt: if tf.train.checkpoint_exists(chpt): saver.restore(sess, chpt) print("Model has been resotre from %s" % (hparams.restore_checkpoint)) else: print("No pre-trained model loaded, abort!!!") return sess.run(tf.local_variables_initializer()) predict_result = cnn.predict(sess=sess, input_txt=TEST_EMAIL, input_vocab=input_vocab, label_vocab=label_vocab) print("Predicted result is %s" % predict_result)
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) fw.writerow(["prediction", "label", "review"]) fw.writerows(result)
batch_size = 32 embedding_dims = 50 epochs = 10 print('Loading data...') (x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features) print(len(x_train), 'train sequences') print(len(x_test), 'test sequences') print('Pad sequences (samples x time)...') x_train = sequence.pad_sequences(x_train, maxlen=maxlen) x_test = sequence.pad_sequences(x_test, maxlen=maxlen) print('x_train shape:', x_train.shape) print('x_test shape:', x_test.shape) print('Build model...') model = TextCNN(maxlen, max_features, embedding_dims).get_model() model.compile('adam', 'binary_crossentropy', metrics=['accuracy']) print('Train...') early_stopping = EarlyStopping(monitor='val_acc', patience=3, mode='max') model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, callbacks=[early_stopping], validation_data=(x_test, y_test)) print('Test...') result = model.predict(x_test)