Y-debug-sys / Diffusion-TS

[ICLR 2024] Official Implementation of "Diffusion-TS: Interpretable Diffusion for General Time Series Generation"
MIT License
186 stars 27 forks source link

生成较长时间序列 #44

Closed mkbk-with-circle closed 4 months ago

mkbk-with-circle commented 4 months ago

🥹🥹作者您好,我现在又有一个问题,就是假设我想要先用已有数据训练处一个模型,然后生成一个(只需要一个)很长的时间序列(比如100w长度),那我是不是要在训练时把window也设置为100w,这样您的模型就会因为数据量过大而无法训练? 如果可以的话,是否可以在训练时把window设置为合理的较小的数值比如window=200,然后在无条件生成的时候可以生成较长的时间序列?

mkbk-with-circle commented 4 months ago

我现在如果直接在samples = trainer.sample(num=1, size_every=1, shape=[2000, dataset.var_num])这句话中设定shape的形状,那么会报错

Y-debug-sys commented 4 months ago

你好,没考虑过这样的场景(100w长度),不过可以反复自回归式地生成较长的长度(除了第一次,每次都基于上次生成的后半段继续生成)。

mkbk-with-circle commented 4 months ago

好的,感谢提供解决方案!谢谢!

mkbk-with-circle commented 4 months ago

欸话说,如果我最开始只生成一条时间序列的话,会不会因为随机性比较大然后后面自回归生成的数据都不佳呢?

Y-debug-sys commented 4 months ago

由于没有考虑过超出 512 长度的一次性序列生成,在不对原代码大规模修改的情况下,只能如此权衡。

mkbk-with-circle commented 4 months ago

好滴感谢!

mkbk-with-circle commented 4 months ago

您好,我遇到了和之前某一位同学类似的问题,就是我现在尝试按照您说的去写一个自回归的预测生成,所以我打算用无条件生成的一条时间序列(长度为200)来作为最开始的时间序列并且之后在此基础上进行自回归的预测。于是我现在在尝试掌握pred模式下的预测,遇到了一些问题,我运行了:python main.py --name netshare_predict --config_file Config/my_config.yaml --gpu 0 --sample 1 --milestone 10 --mode predict --pred_len 35之后,输出ddpm_predict_netshare_predict.npy和my_yaml_norm_truth_200_test.npy的形状,都为(80, 200, 165),然后看到之前第“32”个问题里的对话,我理解的是,这个ddpm_predict_netshare_predict.npy的第二维度的前(200-35)的值和my_yaml_norm_truth_200_test.npy一样,第二维度的后35的值是通过前(200-35)的值预测出来的,请问我的理解是否有误?如果无误的话,我发现这两个文件的(1,1,1~165)的数据就不一样欸?请问是为什么呢?

my_config.yaml.txt

mkbk-with-circle commented 4 months ago
截屏2024-07-29 09 56 55
Y-debug-sys commented 4 months ago

我发现这两个文件的(1,1,1~165)的数据就不一样欸?请问是为什么呢?

哪里不一样?提供的截图是一样的。

mkbk-with-circle commented 4 months ago

后面几位的小数不一样是正常的是咩?

Y-debug-sys commented 4 months ago

可能是浮点数转换产生的误差吧。

mkbk-with-circle commented 4 months ago

好的,我再次确认一下我前面对pred mode的理解——“这个ddpm_predict_netshare_predict.npy的第二维度的前(200-35)的值和my_yaml_norm_truth_200_test.npy一样,第二维度的后35的值是通过前(200-35)的值预测出来的”——是否有误?

Y-debug-sys commented 4 months ago

好的,我再次确认一下我前面对pred mode的理解——“这个ddpm_predict_netshare_predict.npy的第二维度的前(200-35)的值和my_yaml_norm_truth_200_test.npy一样,第二维度的后35的值是通过前(200-35)的值预测出来的”——是否有误?

是的。

mkbk-with-circle commented 4 months ago

感谢!