LibCity / Bigscity-LibCity

LibCity: An Open Library for Urban Spatial-temporal Data Mining
https://libcity.ai/
Apache License 2.0
890 stars 164 forks source link

AGCRN模型在PEMSD4,和PEMSD8数据集上的问题 #220

Closed sqy123qwer closed 2 years ago

sqy123qwer commented 2 years ago

你好,我在用AGCRN模型在PEMSD4,和PEMSD8这两个数据集上跑的时候,实验结果出现了一些问题,MAPE指标本身值有问题之外还没有规律性,其他指标与原文也有较大的出入 image

sqy123qwer commented 2 years ago

已解决

MaxRubby commented 1 year ago

请问是如何解决的呢,我在一些复现一些模型时也出现了masked_mape 百分之几百的情况,R2甚至都是负数,但是MAE和RMSE挺低的

aptx1231 commented 1 year ago

AGCRN

请问是如何解决的呢,我在一些复现一些模型时也出现了masked_mape 百分之几百的情况,R2甚至都是负数,但是MAE和RMSE挺低的

AGCRN的话不应该,这个模型性能很好的。你是在哪些模型出问题呢,mape百分之几百, R2是负数,就是因为那个模型性能太差了。

MaxRubby commented 1 year ago

56770-STResNet-NYCTAXI201401-201403_GRID-Mar-16-2023_10-52-16.log 58405-STGCN-PEMSD4-Feb-26-2023_15-56-52.log 您好,我是在跑这两个实验的时候遇到的,感觉最后的结果MAPE值有点奇怪,多步预测就是按照你们给的方法改的

    def predict(self, batch):

        x = batch['X']  # (batch_size, input_length, num_nodes, feature_dim)
        y = batch['y']  # (batch_size, output_length, num_nodes, feature_dim)
        y_preds = []

        x_ = x.clone()
        for i in range(self.output_window):
            batch_tmp = {'X': x_}
            y_ = self.forward(batch_tmp)  # (batch_size, 1, num_nodes, output_dim)
            y_preds.append(y_.clone())
            if y_.shape[-1] < x_.shape[-1]:  # output_dim < feature_dim
                y_ = torch.cat([y_, y[:, i:i+1, :, self.output_dim:]], dim=3) #升
            x_ = torch.cat([x_[:, 1:, :, :], y_], dim=1)
        y_preds = torch.cat(y_preds, dim=1)  # (batch_size, output_length, num_nodes, output_dim)
        # print(y_preds.shape)
        return y_preds
aptx1231 commented 1 year ago

56770-STResNet-NYCTAXI201401-201403_GRID-Mar-16-2023_10-52-16.log 58405-STGCN-PEMSD4-Feb-26-2023_15-56-52.log 您好,我是在跑这两个实验的时候遇到的,感觉最后的结果MAPE值有点奇怪,多步预测就是按照你们给的方法改的

    def predict(self, batch):

        x = batch['X']  # (batch_size, input_length, num_nodes, feature_dim)
        y = batch['y']  # (batch_size, output_length, num_nodes, feature_dim)
        y_preds = []

        x_ = x.clone()
        for i in range(self.output_window):
            batch_tmp = {'X': x_}
            y_ = self.forward(batch_tmp)  # (batch_size, 1, num_nodes, output_dim)
            y_preds.append(y_.clone())
            if y_.shape[-1] < x_.shape[-1]:  # output_dim < feature_dim
                y_ = torch.cat([y_, y[:, i:i+1, :, self.output_dim:]], dim=3) #升
            x_ = torch.cat([x_[:, 1:, :, :], y_], dim=1)
        y_preds = torch.cat(y_preds, dim=1)  # (batch_size, output_length, num_nodes, output_dim)
        # print(y_preds.shape)
        return y_preds

nyctaxi这个估计是因为性能本身就很差,一般stresnet都只看mae和mse指标,他论文就是这样。 pemsd4这个log看是你用了3维特征,流量、速度、占有率,一般论文只用流量数据,修改下config.json,只保留traffic_flow,应该会好一些。

MaxRubby commented 1 year ago

56770-STResNet-NYCTAXI201401-201403_GRID-Mar-16-2023_10-52-16.log 58405-STGCN-PEMSD4-Feb-26-2023_15-56-52.log 您好,我是在跑这两个实验的时候遇到的,感觉最后的结果MAPE值有点奇怪,多步预测就是按照你们给的方法改的

    def predict(self, batch):

        x = batch['X']  # (batch_size, input_length, num_nodes, feature_dim)
        y = batch['y']  # (batch_size, output_length, num_nodes, feature_dim)
        y_preds = []

        x_ = x.clone()
        for i in range(self.output_window):
            batch_tmp = {'X': x_}
            y_ = self.forward(batch_tmp)  # (batch_size, 1, num_nodes, output_dim)
            y_preds.append(y_.clone())
            if y_.shape[-1] < x_.shape[-1]:  # output_dim < feature_dim
                y_ = torch.cat([y_, y[:, i:i+1, :, self.output_dim:]], dim=3) #升
            x_ = torch.cat([x_[:, 1:, :, :], y_], dim=1)
        y_preds = torch.cat(y_preds, dim=1)  # (batch_size, output_length, num_nodes, output_dim)
        # print(y_preds.shape)
        return y_preds

nyctaxi这个估计是因为性能本身就很差,一般stresnet都只看mae和mse指标,他论文就是这样。 pemsd4这个log看是你用了3维特征,流量、速度、占有率,一般论文只用流量数据,修改下config.json,只保留traffic_flow,应该会好一些。

原来是这样,感谢感谢!