def main(): parser = argparse.ArgumentParser() parser.add_argument('--batch-size', default=32, type=int) parser.add_argument('--data-type', default='SNLI') parser.add_argument('--dropout', default=0.25, type=float) parser.add_argument('--epoch', default=40, type=int) parser.add_argument('--gpu', default=0, type=int) parser.add_argument('--learning-rate', default=0.5, type=float) parser.add_argument('--print-freq', default=3000, type=int) parser.add_argument('--weight-decay', default=5e-5, type=float) parser.add_argument('--word-dim', default=300, type=int) parser.add_argument('--d-e', default=300, type=int) parser.add_argument('--d-h', default=300, type=int) args = parser.parse_args() print('loading SNLI data...') data = SNLI(args) setattr(args, 'word_vocab_size', len(data.TEXT.vocab)) setattr(args, 'class_size', len(data.LABEL.vocab)) setattr(args, 'model_time', strftime('%H:%M:%S', gmtime())) if args.gpu > -1: setattr(args, 'device', "cuda:0") else: setattr(args, 'device', "cpu") print('training start!') best_model = train(args, data) if not os.path.exists('saved_models'): os.makedirs('saved_models') torch.save(best_model.state_dict(), f'saved_models/DiSAN_{args.data_type}_{args.model_time}.pt') print('training finished!')
def main(): parser = argparse.ArgumentParser() parser.add_argument('--batch-size', default=16, type=int) parser.add_argument('--data-type', default='SNLI') parser.add_argument('--dropout', default=0.3, type=float) parser.add_argument('--epoch', default=20, type=int) parser.add_argument('--gpu', default=0, type=int) parser.add_argument('--learning-rate', default=3e-4, type=float) parser.add_argument('--print-freq', default=3000, type=int) parser.add_argument('--word-dim', default=300, type=int) parser.add_argument('--filter-size', default=5, type=int) parser.add_argument('--stride', default=2, type=int) parser.add_argument('--latent-size', default=500, type=int) parser.add_argument('--tau', default=0.01, type=float) parser.add_argument('--hidden-size', default=500, type=int) parser.add_argument('--mode', default='VAE', help="available mode: VAE, SNLI") args = parser.parse_args() print('loading SNLI data...') data = SNLI(args) setattr(args, 'word_vocab_size', len(data.TEXT.vocab)) setattr(args, 'class_size', len(data.LABEL.vocab)) setattr(args, 'model_time', strftime('%H:%M:%S', gmtime())) setattr(args, 'feature_maps', [300, 600, 500]) if args.gpu > -1: setattr(args, 'device', "cuda:0") else: setattr(args, 'device', "cpu") print('training start!') if args.mode == 'VAE': best_model = train(args, data) else: best_model = snli_train(args, data) if not os.path.exists('saved_models'): os.makedirs('saved_models') if args.mode == 'VAE': torch.save(best_model.state_dict(), f'saved_models/DeConv_VAE_{args.data_type}_{args.model_time}.pt') else: torch.save(best_model.state_dict(), f'saved_models/DeConv_VAE_SNLI_{args.data_type}_{args.model_time}.pt') print('training finished!')
def main(): parser = argparse.ArgumentParser() parser.add_argument('--batch-size', default=128, type=int) parser.add_argument('--data-type', default='SNLI') parser.add_argument('--dropout', default=0.1, type=float) parser.add_argument('--epoch', default=20, type=int) parser.add_argument('--gpu', default=0, type=int) parser.add_argument('--hidden-dim', default=600, type=int) parser.add_argument('--learning-rate', default=4e-4, type=float) parser.add_argument('--print-freq', default=1000, type=int) parser.add_argument('--weight-decay', default=5e-5, type=float) parser.add_argument('--word-dim', default=300, type=int) parser.add_argument('--char-dim', default=15, type=int) parser.add_argument('--num-feature-maps', default=100, type=int) parser.add_argument('--num-layers', default=3, type=int) parser.add_argument('--num-heads', default=5, type=int) parser.add_argument('--no-char-emb', default=False, action='store_true') parser.add_argument('--norm-limit', default=10, type=float) args = parser.parse_args() print('loading SNLI data...') data = SNLI(args) setattr(args, 'word_vocab_size', len(data.TEXT.vocab)) setattr(args, 'char_vocab_size', len(data.char_vocab)) setattr(args, 'max_word_len', data.max_word_len) setattr(args, 'class_size', len(data.LABEL.vocab)) setattr(args, 'model_time', strftime('%H:%M:%S', gmtime())) setattr(args, 'FILTER_SIZES', [1, 3, 5]) print('training start!') best_model = train(args, data) if not os.path.exists('saved_models'): os.makedirs('saved_models') torch.save(best_model.state_dict(), f'saved_models/BiLSM_GP_{args.data_type}_{args.model_time}.pt') print('training finished!')
return model if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--batch-size', default=64, type=int) parser.add_argument('--data-type', default='SNLI') parser.add_argument('--dropout', default=0.1, type=float) parser.add_argument('--gpu', default=0, type=int) parser.add_argument('--hidden-size', default=300, type=int) parser.add_argument('--word-dim', default=300, type=int) parser.add_argument('--model-path', required=True) args = parser.parse_args() print('loading SNLI data...') data = SNLI(args) setattr(args, 'word_vocab_size', len(data.TEXT.vocab)) setattr(args, 'class_size', len(data.LABEL.vocab)) # if block size is lower than 0, a heuristic for block size is applied. if args.block_size < 0: args.block_size = data.block_size print('loading model...') model = load_model(args, data) _, acc = test(model, data) print(f'test acc: {acc:.3f}')
print("Sentence Length:") # Long: > 20, Regular: 5-20, Short: < 5 print("Long: %.3f\t\t Regular: %.3f\t\t Short: %.3f" % (correct_dict[3] / total_dict[3], correct_dict[4] / total_dict[4], correct_dict[5] / total_dict[5])) print("Contain Specific Words:") print("Negation: %.3f\t\t Quantifier: %.3f\t Belief: %.3f" % (correct_dict[6] / total_dict[6], correct_dict[7] / total_dict[7], correct_dict[8] / total_dict[8])) if __name__ == "__main__": device = torch.device('cuda') snli = SNLI(batch_size=1, gpu=device) model = Bowman(snli.TEXT.vocab) model.load_state_dict(torch.load("./model/bowman_48.pth")) model.to(device) criterion = nn.CrossEntropyLoss() # build list for type of specific words neg = [ "no", "not", "none", "nobody", "nothing", "neither", "nowhere", "never", "hardly", "barely", "doesnt", "isnt", "wasnt", "shouldnt", "wouldnt", "couldnt", "wont", "cant", "dont" ] qua = [ "much", "enough", "more", "most", "less", "least", "no", "none", "some", "any", "many", "few", "several", "almost", "nearly" ]
shapes = dict(ids1=[None], ids2=[None], mask1=[None], mask2=[None], label=[]) return tf.data.Dataset.from_generator(lambda: (ex for ex in data), types, shapes) if __name__ == '__main__': print("TensorFlow version: {}".format(tf.__version__)) print("Eager execution: {}".format(tf.executing_eagerly())) fdata = os.path.join('data', 'proc.json') if not os.path.isfile(fdata): data = SNLI.load() proc = Model.preprocess_data(data) with open(fdata, 'wt') as f: json.dump(proc, f) else: with open(fdata) as f: proc = json.load(f) for k, v in proc.items(): print(k, len(v)) args = argparse.Namespace( nwords=len(proc['word2index']), seed=42, batch=32, demb=100,