zhengchuanpan / GMAN

GMAN: A Graph Multi-Attention Network for Traffic Prediction (GMAN, https://fanxlxmu.github.io/publication/aaai2020/) was accepted by AAAI-2020.
Apache License 2.0
419 stars 107 forks source link

请问为什么我用您的代码跑出来的结果和论文不一致? #15

Closed Qofsd closed 3 years ago

Qofsd commented 4 years ago

METR这个应该是厦门的数据吧?我把maxepoch改成10,想先跑一遍看看,结果最后MAE只有3.07,而您的论文中为11.2左右,请问这是什么情况?

wdzhong commented 4 years ago

个人猜测,应该是文章中使用的厦门数据不能公开,所以README中给出的表的上半部分用了METR的数据,而不是文章中用的Xianmen的数据。不知道3.07是哪个预测时间给出的结果,如果是30min的话,跟作者列出来的还是比较接近的。

CYBruce commented 4 years ago

@wdzhong @Qofsd METR是一个比较常用的交通预测的数据集,不是厦门数据。想请教下你们在复现的时候要跑多久?为什么我在2个2080Ti上感觉基本跑不动呀?

Frank-qlu commented 4 years ago

@wdzhong @Qofsd METR是一个比较常用的交通预测的数据集,不是厦门数据。想请教下你们在复现的时候要跑多久?为什么我在2个2080Ti上感觉基本跑不动呀?

请问你跑了多久啊?我按照默认参数设置,一个episode 训练 需要3个h左右

EmlynQuan commented 4 years ago

您好,我想请教一下 作者原始的这个代码是如何跑通的?我在utils的73,74行 timeofday = (Time.hour 3600 + Time.minute 60 + Time.second) // Time.freq.delta.total_seconds() 这部分会报错 跪求指点😭

wdzhong commented 4 years ago

您好,我想请教一下 作者原始的这个代码是如何跑通的?我在utils的73,74行 timeofday = (Time.hour 3600 + Time.minute 60 + Time.second) // Time.freq.delta.total_seconds() 这部分会报错 跪求指点😭

能把错误信息贴一下吗?“跑不通”太笼统了。

EmlynQuan commented 4 years ago

@wdzhong 太感谢您的回复了!具体的错误信息是 Traceback (most recent call last): File "/Users/crowd/PycharmProjects/GMAN/METR/train.py", line 55, in mean, std) = utils.loadData(args) File "/Users/crowd/PycharmProjects/GMAN/METR/utils.py", line 74, in loadData // Time.freq.delta.totalseconds() AttributeError: 'numpy.bytes' object has no attribute 'delta' 就是在 timeofday = (Time.hour * 3600 + Time.minute * 60 + Time.second) \ // Time.freq.delta.total_seconds() 这一句报错,希望得到您的指点!

wdzhong commented 4 years ago

@wdzhong 太感谢您的回复了!具体的错误信息是 Traceback (most recent call last): File "/Users/crowd/PycharmProjects/GMAN/METR/train.py", line 55, in mean, std) = utils.loadData(args) File "/Users/crowd/PycharmProjects/GMAN/METR/utils.py", line 74, in loadData // Time.freq.delta.totalseconds() AttributeError: 'numpy.bytes' object has no attribute 'delta' 就是在 timeofday = (Time.hour * 3600 + Time.minute * 60 + Time.second) \ // Time.freq.delta.total_seconds() 这一句报错,希望得到您的指点!

指点不敢当。报错的原因,我觉得可能是pandas版本的问题,造成了index的错乱。可以尝试重置index,比如

df = df.set_index(df.index.values).asfreq("5min")
Time = df.indx

。或者,直接把Time.freq.delta.total_seconds()换成300就行了。

EmlynQuan commented 4 years ago

@wdzhong 好的好的!非常感谢,顺便可以告诉我您之前成功复现时用的pandas的版本吗?

flowingrain commented 3 years ago

@wdzhong @Qofsd METR是一个比较常用的交通预测的数据集,不是厦门数据。想请教下你们在复现的时候要跑多久?为什么我在2个2080Ti上感觉基本跑不动呀?

请问你跑了多久啊?我按照默认参数设置,一个episode 训练 需要3个h左右

我2080s跑一个epoch也得1400多秒,很诧异

LiFXe commented 3 years ago

METR这个应该是厦门的数据吧?我把maxepoch改成10,想先跑一遍看看,结果最后MAE只有3.07,而您的论文中为11.2左右,请问这是什么情况?

METR-LA不是厦门的数据,是从洛杉矶高速公路上环路探测器收集的交通信息。包含207个传感器(节点)的拓扑,以及从2012年3月1日到2012年6月30日的4个月的交通速度数据,是开源的,详见DCRNN的repository。

另外,方便告知一下复现GMAN的环境(例如TensorFlow与Numpy版本)以及复现结果吗,谢谢您。

estimate123 commented 3 years ago

@wdzhong @Qofsd METR是一个比较常用的交通预测的数据集,不是厦门数据。想请教下你们在复现的时候要跑多久?为什么我在2个2080Ti上感觉基本跑不动呀?

请问你跑了多久啊?我按照默认参数设置,一个episode 训练 需要3个h左右

我2080s跑一个epoch也得1400多秒,很诧异

请问下是不是训练的时候占用的显存特别少,然后GPU利用率是0%?

Frank-qlu commented 3 years ago

@wdzhong @Qofsd METR是一个比较常用的交通预测的数据集,不是厦门数据。想请教下你们在复现的时候要跑多久?为什么我在2个2080Ti上感觉基本跑不动呀?

请问你跑了多久啊?我按照默认参数设置,一个episode 训练 需要3个h左右

我2080s跑一个epoch也得1400多秒,很诧异

请问下是不是训练的时候占用的显存特别少,然后GPU利用率是0%?

是的,好像在CPU上跑的

simonzb commented 3 years ago

想请问一下你们复现的实验是在什么超参数下运行的? 我运行Pems数据集,在使用batch_size为16,其他为默认地情况下,只能得到mae为2.9~3.1之间的结果? 谢谢