def main_attention(): args = parse_args() print_args(args) set_seed(args.seed) # load data train_data, val_data, test_data, vocab = loader.load_dataset(args) # initialize model model = {} model["G"], model["D"] = get_embedding(vocab, args) model["clf"] = get_classifier(model["G"].ebd_dim, args) best_path = '../bin/tmp-runs/16116280768954578/18' model['G'].load_state_dict(torch.load(best_path + '.G')) # model['D'].load_state_dict(torch.load(best_path + '.D')) # model['clf'].load_state_dict(torch.load(best_path + '.clf')) # if args.pretrain is not None: # model["ebd"] = load_model_state_dict(model["G"], args.pretrain) file_path = r'../data/attention_data.json' Print_Attention(file_path, vocab, model, args)
def main(): args = parse_args() print_args(args) set_seed(args.seed) # load data train_data, val_data, test_data, class_names, vocab = loader.load_dataset( args) args.id2word = vocab.itos # initialize model model = {} model["G"] = get_embedding(vocab, args) # model["G"]里面 是 词向量平均 + FC criterion = ContrastiveLoss() # model["G2"] = get_embedding_M2(vocab, args) # model["clf"] = get_classifier(model["G"].hidden_size * 2, args) if args.mode == "train": # train model on train_data, early stopping based on val_data optG = train(train_data, val_data, model, class_names, criterion, args) # 使用孪生网络,来进行maml的方法,只改变FC # val_acc, val_std, _ = test(val_data, model, args, # args.val_episodes) test_acc, test_std = test(test_data, class_names, optG, model, criterion, args, args.test_epochs, True) # path_drawn = args.path_drawn_data # with open(path_drawn, 'w') as f_w: # json.dump(drawn_data, f_w) # print("store drawn data finished.") # file_path = r'../data/attention_data.json' # Print_Attention(file_path, vocab, model, args) if args.result_path: directory = args.result_path[:args.result_path.rfind("/")] if not os.path.exists(directory): os.mkdirs(directory) result = { "test_acc": test_acc, "test_std": test_std, # "val_acc": val_acc, # "val_std": val_std } for attr, value in sorted(args.__dict__.items()): result[attr] = value with open(args.result_path, "wb") as f: pickle.dump(result, f, pickle.HIGHEST_PROTOCOL)
def main(): # make_print_to_file(path='/results') args = parse_args() print_args(args) set_seed(args.seed) # load data train_data, val_data, test_data, vocab = loader.load_dataset(args) args.id2word = vocab.itos # initialize model model = {} model["G"], model["D"] = get_embedding(vocab, args) model["clf"] = get_classifier(model["G"].ebd_dim, args) if args.mode == "train": # train model on train_data, early stopping based on val_data train(train_data, val_data, model, args) # val_acc, val_std, _ = test(val_data, model, args, # args.val_episodes) test_acc, test_std, drawn_data = test(test_data, model, args, args.test_episodes) # path_drawn = args.path_drawn_data # with open(path_drawn, 'w') as f_w: # json.dump(drawn_data, f_w) # print("store drawn data finished.") # file_path = r'../data/attention_data.json' # Print_Attention(file_path, vocab, model, args) if args.result_path: directory = args.result_path[:args.result_path.rfind("/")] if not os.path.exists(directory): os.mkdirs(directory) result = { "test_acc": test_acc, "test_std": test_std, # "val_acc": val_acc, # "val_std": val_std } for attr, value in sorted(args.__dict__.items()): result[attr] = value with open(args.result_path, "wb") as f: pickle.dump(result, f, pickle.HIGHEST_PROTOCOL)
def main(): args = parse_args() # 可以打印到本地!存储下来 if args.path != "": path = args.path sys.stdout = open(path, "w") print("test sys.stdout") print_args(args) set_seed(args.seed) # load data train_data, val_data, test_data, class_names, vocab = loader.load_dataset( args) args.id2word = vocab.itos # initialize model model = {} model["G"] = get_embedding(vocab, args) print( "-------------------------------------param----------------------------------------------" ) sum = 0 for name, param in model["G"].named_parameters(): num = 1 for size in param.shape: num *= size sum += num print("{:30s} : {}".format(name, param.shape)) print("total param num {}".format(sum)) print( "-------------------------------------param----------------------------------------------" ) criterion = ContrastiveLoss() # model["G2"] = get_embedding_M2(vocab, args) # model["clf"] = get_classifier(model["G"].hidden_size * 2, args) if args.mode == "train": # train model on train_data, early stopping based on val_data optG = train(train_data, val_data, test_data, model, class_names, criterion, args) # val_acc, val_std, _ = test(val_data, model, args, # args.val_episodes) test_acc, test_std = test(test_data, class_names, optG, model, criterion, args, args.test_epochs, False) print( ("[TEST] {}, {:s} {:s}{:>7.4f} ± {:>6.4f}, ").format( datetime.datetime.now(), colored("test ", "cyan"), colored("acc:", "blue"), test_acc, test_std, # colored("train stats", "cyan"), # colored("G_grad:", "blue"), np.mean(np.array(grad['G'])), # colored("clf_grad:", "blue"), np.mean(np.array(grad['clf'])), ), flush=True) # path_drawn = args.path_drawn_data # with open(path_drawn, 'w') as f_w: # json.dump(drawn_data, f_w) # print("store drawn data finished.") # file_path = r'../data/attention_data.json' # Print_Attention(file_path, vocab, model, args) if args.result_path: directory = args.result_path[:args.result_path.rfind("/")] if not os.path.exists(directory): os.mkdirs(directory) result = { "test_acc": test_acc, "test_std": test_std, # "val_acc": val_acc, # "val_std": val_std } for attr, value in sorted(args.__dict__.items()): result[attr] = value with open(args.result_path, "wb") as f: pickle.dump(result, f, pickle.HIGHEST_PROTOCOL)