def main(num): # Generate configuration files depending on experiment being run utils.generate_config_files("atomic", num) # Loads the correct configuration file config_file = "config/atomic/config_{}.json".format(num) print(config_file) # Read config file to option config = cfg.read_config(cfg.load_config(config_file)) opt, meta = cfg.get_parameters(config) # Set the random seeds torch.manual_seed(opt.train.static.seed) random.seed(opt.train.static.seed) if config.gpu_mode: torch.cuda.manual_seed_all(opt.train.static.seed) # Where to find the data splits = ["train", "dev", "test"] opt.train.dynamic.epoch = 0 print("Loading Data") categories = opt.data.categories path = "data/atomic/processed/{}/{}.pickle".format( opt.exp, utils.make_name_string(opt.data)) data_loader = data.make_data_loader(opt, categories) loaded = data_loader.load_data(path) print(data_loader.sequences["train"]["total"].size(0)) data_loader.opt = opt data_loader.batch_size = opt.train.dynamic.bs print("Done.") # Initialize text_encoder text_encoder = TextEncoder(config.encoder_path, config.bpe_path) special = [data.start_token, data.end_token] special += ["<{}>".format(cat) for cat in categories] special += [data.blank_token] text_encoder.encoder = data_loader.vocab_encoder text_encoder.decoder = data_loader.vocab_decoder opt.data.maxe1 = data_loader.max_event opt.data.maxe2 = data_loader.max_effect opt.data.maxr = data.atomic_data.num_delimiter_tokens["category"] n_special = len(special) n_ctx = opt.data.maxe1 + opt.data.maxe2 n_vocab = len(text_encoder.encoder) + n_ctx print(data_loader.__dict__.keys()) opt.net.vSize = n_vocab print("Building Model") model = models.make_model(opt, n_vocab, n_ctx, n_special, load=(opt.net.init == "pt")) print("Done.") print("Files will be logged at: {}".format( utils.make_name(opt, prefix="results/losses/", is_dir=True, eval_=True))) data_loader.reset_offsets("train") # Get number of examples data.set_max_sizes(data_loader) if config.gpu_mode: print("Pushing to GPU: {}".format(config.gpu_index)) cfg.device = config.gpu_index cfg.do_gpu = True torch.cuda.set_device(cfg.device) model.cuda(cfg.device) print("Done.") print("Training") optimizer = OpenAIAdam(model.parameters(), lr=opt.train.dynamic.lr, schedule=opt.train.static.lrsched, warmup=opt.train.static.lrwarm, t_total=meta.iterations, b1=opt.train.static.b1, b2=opt.train.static.b2, e=opt.train.static.e, l2=opt.train.static.l2, vector_l2=opt.train.static.vl2, max_grad_norm=opt.train.static.clip) scorers = ["bleu", "rouge", "cider"] trainer = train.make_trainer(opt, meta, data_loader, model, optimizer) trainer.set_evaluator(opt, model, data_loader) trainer.run()
def main(num, LoaderPath=""): # Generate configuration files depending on experiment being run utils.generate_config_files("atomic", num) # Loads the correct configuration file config_file = "config/atomic/config_{}.json".format(num) print(config_file) # Read config file to option config = cfg.read_config(cfg.load_config(config_file)) opt, meta = cfg.get_parameters( config ) ##################opt.exp & opt.data used for path of data loader #########ADRIAN ADDED print("FULL OPT DICT: ") for x in opt: print(x) #for y in opt[x]: #print (y,':',opt[x][y]) ####### # Set the random seeds torch.manual_seed(opt.train.static.seed) random.seed(opt.train.static.seed) if config.gpu_mode: torch.cuda.manual_seed_all(opt.train.static.seed) # Where to find the data splits = ["train", "dev", "test"] opt.train.dynamic.epoch = 0 print("Loading Data") categories = opt.data.categories #####ADRIAN ADDED print("OPT.exp: " + str(opt.exp)) print("OPT.data dictionary as string: " + utils.make_name_string(opt.data)) ###### path = "data/atomic/processed/{}/{}.pickle".format( opt.exp, utils.make_name_string(opt.data)) ##############how is path made?? data_loader = data.make_data_loader( opt, categories) #just copies init of data loader #OLD#loaded = data_loader.load_data(path)#######DATA LOADER PATH #NEW TRY #loaded = data_loader.load_data("MULTI_COMET_DATA\It50k_MaxE50\Slovene\Slo_Loader_It50k_maxE50.pickle")#######DATA LOADER PATH if (LoaderPath == ""): #OLD# loaded = data_loader.load_data(path) #######DATA LOADER PATH else: #NEW# loaded = data_loader.load_data(LoaderPath) ############ print(data_loader.sequences["train"]["total"].size(0)) data_loader.opt = opt data_loader.batch_size = opt.train.dynamic.bs print("Done.") # Initialize text_encoder text_encoder = TextEncoder(config.encoder_path, config.bpe_path) special = [data.start_token, data.end_token] special += ["<{}>".format(cat) for cat in categories] special += [data.blank_token] text_encoder.encoder = data_loader.vocab_encoder text_encoder.decoder = data_loader.vocab_decoder opt.data.maxe1 = data_loader.max_event opt.data.maxe2 = data_loader.max_effect opt.data.maxr = data.atomic_data.num_delimiter_tokens["category"] n_special = len(special) n_ctx = opt.data.maxe1 + opt.data.maxe2 n_vocab = len(text_encoder.encoder) + n_ctx print(data_loader.__dict__.keys()) opt.net.vSize = n_vocab print("Building Model") model = models.make_model(opt, n_vocab, n_ctx, n_special, load=(opt.net.init == "pt")) print("Done.") print("Files will be logged at: {}".format( utils.make_name(opt, prefix="results/losses/", is_dir=True, eval_=True))) data_loader.reset_offsets("train") # Get number of examples data.set_max_sizes(data_loader) if config.gpu_mode: print("Pushing to GPU: {}".format(config.gpu_index)) cfg.device = config.gpu_index cfg.do_gpu = True torch.cuda.set_device(cfg.device) if config.multigpu: model = models.multi_gpu(model, config.gpu_indices).cuda() else: model.cuda(cfg.device) print("Done.") print("Training") optimizer = OpenAIAdam(model.parameters(), lr=opt.train.dynamic.lr, schedule=opt.train.static.lrsched, warmup=opt.train.static.lrwarm, t_total=meta.iterations, b1=opt.train.static.b1, b2=opt.train.static.b2, e=opt.train.static.e, l2=opt.train.static.l2, vector_l2=opt.train.static.vl2, max_grad_norm=opt.train.static.clip) scorers = ["bleu", "rouge", "cider"] trainer = train.make_trainer(opt, meta, data_loader, model, optimizer) trainer.set_evaluator(opt, model, data_loader) trainer.run()
print("Pruned number of evaluation sequences for subset: {}".format( len(data_loader.sequences[split]["total"]))) print("Building Model") model = models.make_model(opt, n_vocab, n_ctx, n_special, load=False) print("Loading Weights") model.load_state_dict(model_file['state_dict']) print("Done Loading Weights") model.eval() # Initialize variable for # of examples to cycle through data.set_max_sizes(data_loader, force_split=split) evaluator = evaluate.make_evaluator(opt, model, data_loader) evaluator.batch_variables["split"] = split model.cuda(cfg.device) loss = evaluator.epoch(opt, model, data_loader, split) data.save_eval_file(opt, loss, "losses", split=split) loss_str = [] loss_str.append("Per Token Loss: {}".format(loss["total_micro"])) loss_str.append("Per Token Perplexity: {}".format(loss["ppl_micro"])) loss_str.append("Per Example Loss: {}".format(loss["total_macro"])) loss_str.append("Per Example Perplexity: {}".format(loss["ppl_macro"])) loss_str = "\n".join(loss_str)
def main(num): # Generate configuration files depending on experiment being run utils.generate_config_files("conceptnet", num) # Loads the correct configuration file config_file = "config/conceptnet/config_{}.json".format(num) print(config_file) # Read config file to option config = cfg.read_config(cfg.load_config(config_file)) opt, meta = cfg.get_parameters(config) # config.gpu_mode = torch.cuda.is_available() # Set the random seeds torch.manual_seed(opt.train.static.seed) random.seed(opt.train.static.seed) if config.gpu_mode: torch.cuda.manual_seed_all(opt.train.static.seed) # Load the data splits = ["train", "dev", "test"] opt.train.dynamic.epoch = 0 print("Loading Data") # Initialize path to pre-set data loader path = "data/conceptnet/processed/{}/{}.pickle".format( opt.exp, utils.make_name_string(opt.data)) # Make data loader data_loader = data.make_data_loader(opt) loaded = data_loader.load_data(path) print(data_loader.sequences["train"]["total"].size(0)) data_loader.opt = opt data_loader.batch_size = opt.train.dynamic.bs print("Done.") text_encoder = TextEncoder(config.encoder_path, config.bpe_path) categories = data.conceptnet_data.conceptnet_relations special = [data.start_token, data.end_token] special += ["<{}>".format(cat) for cat in categories] if loaded: text_encoder.encoder = data_loader.vocab_encoder text_encoder.decoder = data_loader.vocab_decoder else: for special_token in special: text_encoder.decoder[len(encoder)] = special_token text_encoder.encoder[special_token] = len(encoder) data_loader.make_tensors(text_encoder, special) # Set max size of different parts of relation context_size_e1 = data_loader.max_e1 context_size_e2 = data_loader.max_e2 context_size_r = data_loader.max_r opt.data.maxr = context_size_r n_special = len(special) n_ctx = context_size_e1 + context_size_r + context_size_e2 n_vocab = len(text_encoder.encoder) + n_ctx print(data_loader.__dict__.keys()) opt.net.vSize = n_vocab # Build Model print("Building Model") model = models.make_model(opt, n_vocab, n_ctx, n_special, load=(opt.net.init == "pt")) print("Done.") print("Files will be logged at: {}".format( utils.make_name(opt, prefix="results/losses/", is_dir=True, eval_=True))) data_loader.reset_offsets("train", keys=["total"]) data.set_max_sizes(data_loader) # Push to GPU if config.gpu_mode: print("Pushing to GPU: {}".format(config.gpu_index)) cfg.device = config.gpu_index cfg.do_gpu = True torch.cuda.set_device(cfg.device) if config.multigpu: model = models.multi_gpu(model, config.gpu_indices).cuda() else: model.cuda(cfg.device) print("Done.") print("Training") optimizer = OpenAIAdam(model.parameters(), lr=opt.train.dynamic.lr, schedule=opt.train.static.lrsched, warmup=opt.train.static.lrwarm, t_total=meta.iterations, b1=opt.train.static.b1, b2=opt.train.static.b2, e=opt.train.static.e, l2=opt.train.static.l2, vector_l2=opt.train.static.vl2, max_grad_norm=opt.train.static.clip) trainer = train.make_trainer(opt, meta, data_loader, model, optimizer) print(data_loader.sequences["dev"]["total"].max()) trainer.set_generator(opt, model, data_loader) trainer.set_evaluator(opt, model, data_loader) trainer.run()