thuml / Autoformer

About Code release for "Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting" (NeurIPS 2021), https://arxiv.org/abs/2106.13008
MIT License
1.96k stars 422 forks source link

关于代码的几点疑问 #189

Closed wuyulong666 closed 1 year ago

wuyulong666 commented 1 year ago

@wuhaixu2016 作者你好,我再拜读了您的论文和代码之后,产生了几点疑问。

  1. 我看您设置了随机数种子确保结果可以复现,但是为什么没有设置torch.cuda.manual_seed呢?
  2. 在划分数据集的时候减去seq_len,是为了保证拥有num_vali和num_test长度的数据来计算loss吗?
  3. 在Transformer_EncDec.py line12,downConv的padding为什么不是1而是2呢?
  4. autocorrelation是不需要掩码是吗?虽然设置了参数,但是没有掩码操作。
  5. 在decoder部分,为什么是直接对趋势项相加,然后作用一个projection。这和论文叙述的不太一样,是为了减少参数量设计的吗?并且我不太理解为什么projection的kernel_size=3,这和之前FFN层设计的conv不太一样,为什么要这样做呢?
  6. 我看您在Autoformer_EncDec中保留了informer的conv_layer的设计,请问您有尝试过加上conv_layer效果会变好吗?
wuhaixu2016 commented 1 year ago

您好,感谢细致阅读

  1. 您也可以设置torch.cuda.manual_seed,在论文中,结果是多个实验的平均值
  2. 去掉seq_len主要是为了避免各个subset之间存在相互覆盖,造成测试数据集被用于训练或者验证
  3. 为了保证数据长度确实减小了对应的倍数
  4. 目前Transformer使用的enc-dec结构,不存在auto-regressive过程,因此不需要掩码
  5. 代码和论文中的描述是一致的,具体可以看Section 3.1最后的公式。projection的具体形式不是很重要,您也可以改成之前ffn的conv
  6. conv_layer在informer中用于下采样,实验中证明这样仅仅可以加速训练,会损害实验效果。