def __init__(self, graph, model, lr, bs, n_step, discount_factor, lr_decay, folder_path): self.graphs = graph self.embed_dim = 64 self.model_name = model self.k = 20 self.alpha = 0.1 self.gamma = 1 #0.99 self.lambd = 0. self.n_step = n_step self.epsilon_ = 1 self.epsilon_min = 0.05 self.discount_factor = discount_factor #self.eps_end=0.02 self.epsilon_start = 1 self.epsilon_step = 60000 self.t = 1 self.memory = [] self.memory_n = [] self.minibatch_length = bs if self.model_name == 'S2V_QN_1': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_1(**args_init) elif self.model_name == 'S2V_QN_2': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_2(**args_init) elif self.model_name == 'GCN_QN_1': args_init = load_model_config()[self.model_name] self.model = models.GCN_QN_1(**args_init) elif self.model_name == 'LINE_QN': args_init = load_model_config()[self.model_name] self.model = models.LINE_QN(**args_init) elif self.model_name == 'W2V_QN': args_init = load_model_config()[self.model_name] self.model = models.W2V_QN(G=self.graphs[self.games], **args_init) self.criterion = torch.nn.MSELoss(reduction='sum') self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr) self.scheduler = torch.optim.lr_scheduler.LambdaLR( self.optimizer, lr_lambda=lambda epoch: lr_decay**epoch) self.T = 5 self.t = 1 current_path = pathlib.Path().absolute() self.abs_folder_path = current_path / (folder_path + '/')
def __init__(self, graph, model, lr, bs, n_step): self.graphs = graph self.embed_dim = 64 self.model_name = model self.k = 20 self.alpha = 0.1 self.gamma = 0.99 self.lambd = 0. self.n_step = n_step self.epsilon_ = 1 self.epsilon_min = 0.02 self.discount_factor = 0.999990 #self.eps_end=0.02 #self.eps_start=1 #self.eps_step=20000 self.t = 1 self.memory = [] self.memory_n = [] self.minibatch_length = bs if self.model_name == 'S2V_QN_1': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_1(**args_init) elif self.model_name == 'S2V_QN_2': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_2(**args_init) elif self.model_name == 'GCN_QN_1': args_init = load_model_config()[self.model_name] self.model = models.GCN_QN_1(**args_init) elif self.model_name == 'LINE_QN': args_init = load_model_config()[self.model_name] self.model = models.LINE_QN(**args_init) elif self.model_name == 'W2V_QN': args_init = load_model_config()[self.model_name] self.model = models.W2V_QN(G=self.graphs[self.games], **args_init) self.criterion = torch.nn.MSELoss(reduction='sum') self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr) self.T = 5 self.t = 1
def __init__(self, environment, model, lr, bs, n_step): self.train_graphs = environment.train_graphs self.test_graphs = environment.test_graphs self.embed_dim = 64 self.model_name = model self.alpha = 0.1 self.gamma = 0.99 self.lambd = 0. self.n_step = n_step self.decay = True # whether or not to decay this round self.epsilon_ = 1 # starting epsilon value self.epsilon_min = 0.01 # minimum epsilon value self.decay_factor = 1 # overwritten by self.calc_convergence to converge in one epoch self.memory = deque(maxlen=1) # same self.memory_n = deque(maxlen=1) # same self.t = 1 self.minibatch_length = bs self.games = 0 # decide model if self.model_name == 'S2V_QN_1': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_1(**args_init) elif self.model_name == 'S2V_QN_2': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_2(**args_init) elif self.model_name == 'GCN_QN_1': args_init = load_model_config()[self.model_name] self.model = models.GCN_QN_1(**args_init) elif self.model_name == 'LINE_QN': args_init = load_model_config()[self.model_name] self.model = models.LINE_QN(**args_init) elif self.model_name == 'W2V_QN': args_init = load_model_config()[self.model_name] self.model = models.W2V_QN(G=self.train_graphs[self.games], **args_init) self.criterion = torch.nn.MSELoss(reduction='sum') self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr) self.reset(self.games)
def __init__(self,model,lr,bs,n_step,env_name,node_max): self.graphs = None self.embed_dim = 64 self.model_name = model self.node_max = node_max self.alpha = 0.1 self.gamma = 1 #0.99 self.lambd = 0. self.n_step=n_step self.epsilon_=1 self.epsilon_min=0.05 self.discount_factor =0.999990 self.memory = [] self.memory_n=[] self.minibatch_length = bs self.env=envir.Environment(env_name) self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") if self.model_name == 'S2V_QN_1': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_1(**args_init) #self.old_model = models.S2V_QN_1(**args_init) elif self.model_name == 'S2V_QN_2': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_2(**args_init) elif self.model_name== 'GCN_QN_1': args_init = load_model_config()[self.model_name] self.model = models.GCN_QN_1(**args_init) elif self.model_name == 'LINE_QN': args_init = load_model_config()[self.model_name] self.model = models.LINE_QN(**args_init) elif self.model_name == 'W2V_QN': args_init = load_model_config()[self.model_name] self.model = models.W2V_QN(G=self.graphs[self.games], **args_init) self.T = 5 if torch.cuda.device_count() >= 1: print("Using", torch.cuda.device_count(), "GPUs!") self.model.to(self.device) #self.old_model.to(self.device) torch.backends.cudnn.benchmark = True else: print("Using CPU") self.criterion = torch.nn.MSELoss(reduction='sum').to(self.device) self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr) if torch.cuda.device_count() > 1: self.model = torch.nn.DataParallel(self.model)
def __init__(self,graph,args): self.ckpt = args.ckpt if not args.test_only and not os.path.exists(f'{self.ckpt}/model_ckpts'): os.mkdir(f'{self.ckpt}/model_ckpts') self.train = graph self.test = pkl.load(open(args.test_file, 'rb')) self.graphs = graph self.embed_dim = 64 self.model_name = args.model self.k = 20 self.alpha = 0.1 self.gamma = 0.99 self.lambd = 0. self.n_step=3 self.epsilon_=1.0 self.epsilon_min=0.02 self.discount_factor =0.999990 self.eps_end=0.02 self.eps_start=1 self.eps_step=20000 self.t=1 self.memory = [] self.memory_n=[] if self.model_name == 'S2V_QN_1': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_1(**args_init) elif self.model_name == 'S2V_QN_2': args_init = load_model_config()[self.model_name] self.model = models.S2V_QN_2(**args_init) elif self.model_name== 'GCN_QN_1': args_init = load_model_config()[self.model_name] self.model = models.GCN_QN_1(**args_init) elif self.model_name == 'LINE_QN': args_init = load_model_config()[self.model_name] self.model = models.LINE_QN(**args_init) elif self.model_name == 'W2V_QN': args_init = load_model_config()[self.model_name] self.model = models.W2V_QN(G=self.graphs[self.games], **args_init) self.criterion = torch.nn.MSELoss(reduction='sum') self.optimizer = torch.optim.Adam(self.model.parameters(), lr=1.e-3) #self.optimizer_target = torch.optim.Adam(self.model_target.parameters(), lr=1.e-4) self.T = 5 self.t = 1 if args.load_model != False: self.model.load_state_dict(torch.load(args.load_model)) if USE_GPU: self.criterion = self.criterion.cuda() self.model = self.model.cuda()