if args.train == 'rlspeaker': speaker.train(train_tuple, valid_tuple, args.epochs, rl=True) elif args.train == 'validspeaker': scores, result = speaker.evaluate(valid_tuple) print(scores) elif args.train == 'testspeaker': test_tuple = get_tuple(args.dataset, 'test', shuffle=False, drop_last=False) scores, result = speaker.evaluate(test_tuple) print("Test:") print("Have result for %d data" % len(result)) print(scores) import json json.dump(result, open("test_result.json", 'w')) elif 'nlvr' in args.train: train_tuple = get_tuple(args.dataset, 'train', task='nlvr', shuffle=False, drop_last=True) valid_tuple = get_tuple(args.dataset, 'valid', task='nlvr', shuffle=False, drop_last=False) listener = Listener(train_tuple[0]) if args.load is not None: listener.load(args.load) if args.train == 'nlvr': listener.train(train_tuple, valid_tuple, args.epochs) elif args.train == 'validnlvr': listener.evaluate(valid_tuple) elif args.train == 'snlvr': true_speaker = Speaker(train_tuple[0]) # [0] is the dataset if args.true_speaker is not None: print("Load speaker from %s." % args.load) true_speaker.load(args.true_speaker) listener = Listener(train_tuple[0], true_speaker=true_speaker) listener.speaker_evaluate(valid_tuple)