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 + '/')
Beispiel #2
0
    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
Beispiel #3
0
    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)
Beispiel #5
0
    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()