Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一些基础问题 #99

Closed
SSSUNSHINNING opened this issue Apr 13, 2021 · 8 comments
Closed

一些基础问题 #99

SSSUNSHINNING opened this issue Apr 13, 2021 · 8 comments

Comments

@SSSUNSHINNING
Copy link

首先非常感谢作者的分享,受益匪浅。下面我有几个问题想要询问一下,也期待所有看到这个提问的人们一起进行讨论。
1、在数据加载文件中,seq_len, label_len, pred_len这三个属性的设定是否遵循了哪些规则。
2、timeenc这个属性的作用,是在计算时间成本吗?
3、在进行数据集分割中,border1s和border2s的标准是什么,123024是如何得到的。

@QuantHao
Copy link

Q1 is duplicate of #94

@cookieminions
Copy link
Collaborator

  1. pred_len 是预测序列的长度,label_len是Decoder的start token的长度,这个的设定根据你的预测任务来,可以自由设定,seq_len是Encoder输入序列的长度,同样可以自由设定,建议的输入长度是一些和实际周期有关的数,例如预测24小时的数据,可以使用前一周的数据7*24小时作为seq_len,使用前一天的数据24小时作为label_len;关于输入可以参考模型结构图
    image

  2. timeenc只是Dataloader实现时为了区别不同的时间编码方式做的一个标记,不同的timeenc会加载出不同的timestamp

  3. 12 * 30 * 24是为了方便取的12个月每月30天每天24个小时,并不是严格意义的一年

@fengkoushangdeZZX
Copy link

您好,我还想接着问一下border1s和border2s的含义什么?我没看懂data_loader这里面train,val,test是怎么分割的啊?

@cookieminions
Copy link
Collaborator

您好,我还想接着问一下border1s和border2s的含义什么?我没看懂data_loader这里面train,val,test是怎么分割的啊?

border1s和borders2s只是为了方便train val和test取值,不同数据集的具体分割方式在论文中有提到,如果要从代码理解,建议你阅读Dataset_Custom部分,自定义数据集是按照70%,10%和20%分割的

num_train = int(len(df_raw)*0.7)
num_test = int(len(df_raw)*0.2)
num_vali = len(df_raw) - num_train - num_test
border1s = [0, num_train-self.seq_len, len(df_raw)-num_test-self.seq_len]
border2s = [num_train, num_train+num_vali, len(df_raw)]
border1 = border1s[self.set_type]
border2 = border2s[self.set_type]

@SSSUNSHINNING
Copy link
Author

弱弱的问一下,为啥会有inverse的操作

@cookieminions
Copy link
Collaborator

弱弱的问一下,为啥会有inverse的操作

inverse是后面增加的一个功能,是因为github上有人反馈希望可以增加一个将标准化的数值缩放回原来的数据尺度的功能,所以增加的

@XinWangTIM
Copy link

多个站点的数据序列在Dataset_Custom如何处理呢

@SSSUNSHINNING
Copy link
Author

if self.inverse:
self.data_y = df_data.values[border1:border2]
else:
self.data_y = data[border1:border2]
这段代码在归一化操作后,inverse的真假带来的具体区别是什么,我觉得除了形式不同无区别。若真是形式不同,那么这两种形式的作用是什么。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants