if args.use_adversary: adv_loss = adv_loss.mean() if args.use_adversary: loss += adv_loss val_loss += loss.item() val_loss /= len(val_generator) print('Val loss: %s' % val_loss, flush=True) es(val_loss, checkpoints) if es.early_stop: break print('Trained for %s epochs' % epoch) predictor.load_state_dict(load_checkpoint(PREDICTOR_CHECKPOINT_PATH)) os.remove(PREDICTOR_CHECKPOINT_PATH) if not args.freeze_bert: model.load_state_dict(load_checkpoint(MODEL_CHECKPOINT_PATH)) os.remove(MODEL_CHECKPOINT_PATH) if args.gridsearch_classifier: auprcs = [] # one value for each in c grid prediction_dict, _, _ = evaluate_on_set( val_generator, predictor, emb_gen=args.freeze_bert) for c_val in c_grid: merged_preds_val = merge_preds(prediction_dict, c_val) merged_preds_val_list = [ merged_preds_val[str(i)] for i in actual_val.index] auprcs.append(average_precision_score( actual_val.values.astype(int), merged_preds_val_list))
parser.add_argument("--num_lstm_layers", type=int, default=2) parser.add_argument("--dropout_prob", type=float, default=0.1) if __name__ == '__main__': args = parser.parse_args() device = torch.device("cpu") if torch.cuda.is_available(): device = torch.device("cuda") dl = DataLoader(batch_size=32) test_data = dl.setup(return_only_test_data=True) test_data = dl.test_dataloader(test_data) wts = torch.load(args.weights_path, map_location=torch.device("cpu")) model = Classifier(dl.vocab_size, args.embedding_size, args.num_lstm_layers, args.dropout_prob) model.load_state_dict(wts) model.to(device) preds, labels = model.predict(test_data, device) cm = confusion_matrix(labels, preds) names = [ "negative", "somewhat negative", "neutral", "somewhat positive", "positive" ] cm = pd.DataFrame(cm, columns=names, index=names) print(cm)