Y的定义并没有多步输出
时间: 2024-03-25 09:40:40 浏览: 22
非常抱歉,我之前的回答有误。如果需要进行多步预测,则输出数据集Y的维度应该为(n-s-self.h+1, self.h, self.m),其中第一维表示时间步,第二维表示预测的时间步数,第三维表示特征数量。同时,长期数据集X2也需要进行相应的修改,变成一个三维数组,其中第一维表示时间步,第二维表示预测的时间步数,第三维表示长期时间窗口,第四维表示特征数量。修改后的代码如下:
```
s = self.ps*self.skip + self.Ck-1 + self.h-1
X1 = np.zeros((self.n-s, self.w, self.m)) # short term dataset
X2 = np.zeros((self.n-s-self.h+1, self.h, self.ps, self.Ck, self.m)) # long term dataset
Y = np.zeros((self.n-s-self.h+1, self.h, self.m)) # output dataset
for i in range(s, self.n):
t = i-self.h+1
X1[i-s] = self.raw[t-self.w:t].copy()
for j in range(self.h):
idx = []
for k in range(self.ps):
idx = list(range(t+j-self.Ck-k*self.skip, t+j-k*self.skip)) + idx
idx = np.array(idx, dtype=int)
X2[i-s-self.h+j+1, j] = self.raw[idx].reshape(self.ps, self.Ck, self.m).copy()
Y[i-s-self.h+j+1, j] = self.raw[i+j].copy()
return X1, X2, Y
```