如何修改上面数据定义使得Y指向下一个
时间: 2024-03-04 22:49:08 浏览: 43
要将`Y`改为指向下一个时刻的取值,需要将代码中`Y[i-s]`的取值改为`self.raw[i+1].copy()`,即将当前时刻的取值改为下一个时刻的取值。修改后的代码如下:
```
def _slice_multi(self):
# self.n 是数据集总行数
# self.m 是列
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.ps*self.Ck, self.m)) # long term dataset
Y = np.zeros((self.n-s, 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()
idx = []
for k in range(self.ps): # 执行4次,每次间隔skip长,取Ck=6, total = 4 * 6 = 24
idx = list(range(t-self.Ck-k*self.skip, t-k*self.skip)) + idx
idx = np.array(idx, dtype=int)
X2[i-s] = self.raw[idx].copy()
Y[i-s] = self.raw[i+1].copy()
return X1, X2, Y
```
需要注意的是,在修改代码时,也需要相应地修改模型的输出和损失函数,以保证模型的正确性和训练效果。
阅读全文