tsinghua-fib-lab / UniST

Official implementation for "UniST: A Prompt-Empowered Universal Model for Urban Spatio-Temporal Prediction" (KDD 2024)
80 stars 11 forks source link

复现问题 #9

Open kakaroy123 opened 2 months ago

kakaroy123 commented 2 months ago

做了下复现,还有几个问题想请教一下: 1、Crowd测试结果不一致问题 预训练指令: python main.py --device_id 3 --machine machine --dataset CrowdCellularBikeNYCTaxiNYCBikeNYC2TaxiNYC2TrafficCDTrafficHZTrafficJNTrafficNJTrafficSHTrafficTJTrafficZZ --task short --size middle --mask_strategy_random 'batch' --lr 3e-4 --used_data 'diverse' --prompt_ST 0

得到预训练模型后,用Crowd数据集做了测试,指令如下: python main.py --device_id 2 --machine machine --task short --size middle --prompt_ST 1 --pred_len 6 --his_len 6 --num_memory_spatial 512 --num_memory_temporal 512 --prompt_content 's_p_c' --dataset Crowd --used_data 'diverse' --file_load_path Pretrain_Dataset_CrowdCellularBikeNYCTaxiNYCBikeNYC2TaxiNYC2TrafficCDTrafficHZTrafficJNTrafficNJTrafficSHTrafficTJTrafficZZ_Task_short_FewRatio_0.5 --few_ratio 0.0

测试结果如下: stage:0, epoch:0, best rmse: 0.002725724898491081 {'Crowd': {'temporal': {0.5: {'rmse': 15481.58774870661, 'mae': 7934.287060662857}}}} 我看论文里面,Crowd的短时预测,RMES是3000,MAE是1380,感觉和我测试结果还有较大差异,想问下可能是哪里的问题呢?

2、如果想拿些新的数据来做测试或者是预训练,网格划分大小有要求么?如果部分网格内的数据获取不到怎么处理?

YuanYuan98 commented 2 months ago

针对复现问题:

从你测试结果来看,还没比过HA的性能,可能问题有以下几点:

  1. --dataset 输入不对,没有用*隔开数据集,导致没有数据参与训练
  2. file_load_path 中FewRatio小于1,理应为1

使用新数据:

网格划分大小没有严格要求,一个城市大概有几百个网格应该都是可以的。如果部分网格无数据,可以用mask的方式,attention计算不关注mask网格,计算loss不考虑mask网格。

kakaroy123 commented 2 months ago

针对复现问题:

从你测试结果来看,还没比过HA的性能,可能问题有以下几点:

  1. --dataset 输入不对,没有用*隔开数据集,导致没有数据参与训练
  2. file_load_path 中FewRatio小于1,理应为1

使用新数据:

网格划分大小没有严格要求,一个城市大概有几百个网格应该都是可以的。如果部分网格无数据,可以用mask的方式,attention计算不关注mask网格,计算loss不考虑mask网格。

感谢!第一个问题我把FewRatio改为1再重新训练下。 另外还有个数据集的问题,看了下论文里的数据集说明,TrafficJN这个数据集是五分钟收集一次,但是我看咱们给的json里面timestamp好像time of day最大是47,是所有数据集都要处理成半小时一次的数据么?

kakaroy123 commented 2 months ago

还有一个问题:Periodical Data的生成可以举个例子么,看README里面介绍的是有一个维度是Number of past days corresponding to the time of day,然后看了下Json数据里面这个数都是3,意思是取当前时间过去3天相同时刻的数据么?

KL4805 commented 1 month ago

@kakaroy123 Hi, did you eventually manage to replicate the results?

kakaroy123 commented 1 month ago

@kakaroy123 Hi, did you eventually manage to replicate the results?

嗯 基本复现了 感谢!

KL4805 commented 1 month ago

@kakaroy123 Hi, did you eventually manage to replicate the results?

嗯 基本复现了 感谢!

Could you please share some insights about what you did to make it work? Because I also got some results that are worse than HA.

https://github.com/tsinghua-fib-lab/UniST/issues/14

kakaroy123 commented 1 month ago

针对复现问题:

从你测试结果来看,还没比过HA的性能,可能问题有以下几点:

  1. --dataset 输入不对,没有用*隔开数据集,导致没有数据参与训练
  2. file_load_path 中FewRatio小于1,理应为1

使用新数据:

网格划分大小没有严格要求,一个城市大概有几百个网格应该都是可以的。如果部分网格无数据,可以用mask的方式,attention计算不关注mask网格,计算loss不考虑mask网格。

作者您好!关于无效数据加mask的方式还想请教一下,看了下代码,在Embedding后数据维度和数值都发生变化,无效数据的位置好像找不到在哪里了,怎么加mask呢?

YuanYuan98 commented 1 month ago

针对复现问题:

从你测试结果来看,还没比过HA的性能,可能问题有以下几点:

  1. --dataset 输入不对,没有用*隔开数据集,导致没有数据参与训练
  2. file_load_path 中FewRatio小于1,理应为1

使用新数据:

网格划分大小没有严格要求,一个城市大概有几百个网格应该都是可以的。如果部分网格无数据,可以用mask的方式,attention计算不关注mask网格,计算loss不考虑mask网格。

作者您好!关于无效数据加mask的方式还想请教一下,看了下代码,在Embedding后数据维度和数值都发生变化,无效数据的位置好像找不到在哪里了,怎么加mask呢?

您好,无效数据是指什么意思?

kakaroy123 commented 1 month ago

针对复现问题:

从你测试结果来看,还没比过HA的性能,可能问题有以下几点:

  1. --dataset 输入不对,没有用*隔开数据集,导致没有数据参与训练
  2. file_load_path 中FewRatio小于1,理应为1

使用新数据:

网格划分大小没有严格要求,一个城市大概有几百个网格应该都是可以的。如果部分网格无数据,可以用mask的方式,attention计算不关注mask网格,计算loss不考虑mask网格。

作者您好!关于无效数据加mask的方式还想请教一下,看了下代码,在Embedding后数据维度和数值都发生变化,无效数据的位置好像找不到在哪里了,怎么加mask呢?

您好,无效数据是指什么意思?

网格里一些无法获取真实数据而用0填充的数据。