def eval(self, input, real_val): self.model.eval() #input = nn.functional.pad(input,(1,0,0,0)) output, _, _ = self.model(input) output = output.transpose(1, 3) #output = [batch_size,12,num_nodes,1] real = torch.unsqueeze(real_val, dim=1) predict = output loss = self.loss(predict, real, 0.0) mae = util.masked_mae(predict, real, 0.0).item() mape = util.masked_mape(predict, real, 0.0).item() rmse = util.masked_rmse(predict, real, 0.0).item() return loss.item(), mae, mape, rmse
def train(self, input, real_val): self.model.train() self.optimizer.zero_grad() #input = nn.functional.pad(input,(1,0,0,0)) output, _, _ = self.model(input) output = output.transpose(1, 3) #output = [batch_size,12,num_nodes,1] real = torch.unsqueeze(real_val, dim=1) predict = output loss = self.loss(predict, real, 0.0) loss.backward() if self.clip is not None: torch.nn.utils.clip_grad_norm_(self.model.parameters(), self.clip) self.optimizer.step() mae = util.masked_mae(predict, real, 0.0).item() mape = util.masked_mape(predict, real, 0.0).item() rmse = util.masked_rmse(predict, real, 0.0).item() return loss.item(), mae, mape, rmse
def train(self, input, input_cluster, real_val, real_val_cluster): self.model.train() self.optimizer.zero_grad() #input = nn.functional.pad(input,(1,0,0,0)) output, output_cluster, tran2 = self.model(input, input_cluster) output = output.transpose(1, 3) #output_cluster = output_cluster.transpose(1,3) #output = [batch_size,1,num_nodes,12] real = torch.unsqueeze(real_val, dim=1) #real_cluster = real_val_cluster[:,1,:,:] #real_cluster = torch.unsqueeze(real_cluster,dim=1) predict = output loss = self.loss(predict, real, 0.0) #+energy #loss1 =self.loss(output_cluster, real_cluster,0.0) #print(loss) (loss).backward() if self.clip is not None: torch.nn.utils.clip_grad_norm_(self.model.parameters(), self.clip) self.optimizer.step() mae = util.masked_mae(predict, real, 0.0).item() mape = util.masked_mape(predict, real, 0.0).item() rmse = util.masked_rmse(predict, real, 0.0).item() return loss.item(), mae, mape, rmse
def evaluate_all(pred, target): mape = util.masked_mape(pred, target, 0.0).item() rmse = util.masked_rmse(pred, target, 0.0).item() mae = util.masked_mae(pred, target, 0.0).item() return mape, rmse, mae