解决方案 1 - 批量大小 = 1
好吧,既然看起来你实际上只有一个序列(虽然分开了,但它仍然是一个序列,对吧?),你确实必须使用等于 1 的批量大小进行训练。
如果您不想更改或重新组织数据,只需:
X = X.reshape((-1,length,features))
#where
#length = 4 by your description
#features = 1 (if you have only one var over time, as it seems)
解决方案 2 - 重新组合长度 = 8
仍在使用一个批量大小为 1,重塑输入数据(在将其传递给模型之前),使其具有双倍长度。
最终结果将与您使用所描述的大小为 2 的小批量进行训练完全相同。(但请确保在模型的输入形状中将批量大小设置为 1,否则这会给您带来错误的结果)。
X = X.reshape((-1, 2 * length, features))
这会给你:
X = [
[t01 t02 t03 t04 t05 t06 t07 t08]
[t09 t10 t11 t12 t13 t14 t15 t16]
[t17 t18 t19 t20 t21 t22 t23 t24]
]
解决方案 3 - 仅当您实际上有两个不同的序列时才可能
根据你的描述,你似乎只有一个序列。如果您确实有两个不同/独立的序列,那么您可以制作一批大小为 2 的批次。
如果将序列一分为二(并失去它们之间的连接)不是问题,您可以重新排列数据:
X = X.reshape((2,-1,length, features))
Then:
X0 = X[:,0]
X1 = X[:,1]
...
您可以尝试将其分组在一个数组中:
X = X.reshape((2,-1,length, features))
X = np.swapaxes(X,0,1).reshape((-1,length,features))
Then:
X0 = X[0]
X1 = X[1]
...
你可以尝试通过完整的X
只要在模型中明确将批量大小设置为 2 即可进行训练输入形状.