我在pytorch中遇到LSTM功能的问题。我正在使用LSTM神经网络来预测某个值。输入是多维的(多个要素),输出应是一维的(仅需要预测一个要素)。我想提前预测1-6个时间步。我也想使用多个时间步输入。现在,我必须采用不同的方式来实现这一目标,但似乎都没有。
第一个方法是制作6个不同的多对一网络,每个网络都提前预测另一个时间步长1-6h,但是在预测多个时间步长时仍使用递归结构(请参见图片)(因此不仅要转移目标数据1-6小时)。另一个选择是多对多神经网络,我认为这也很好。 (另请参见图片)
我的输入现在看起来像:首先将同一时间步长上的不同参数进行分组,然后每次将要在预测中使用的所有时间步长进行分组(回头看)
tensor([[[-0.2800, -0.6381, -0.1033, -0.4941, 0.0016],
[-0.3159, 0.1378, -0.1010, -0.4529, 0.0016],
[-0.2800, 0.1378, -0.0963, -0.4706, 0.1150],
...,
[-0.5673, -0.2149, -0.0598, -0.4000, 0.2850],
[-0.3518, -0.4265, -0.0669, -0.3646, 0.3417],
[-0.2440, -0.0738, -0.0657, -0.3823, 0.2283]],
[[-0.3159, 0.1378, -0.1010, -0.4529, 0.0016],
[-0.2800, 0.1378, -0.0963, -0.4706, 0.1150],
[-0.7469, 0.1731, -0.0845, -0.4176, 0.3417],
...,
[-0.3518, -0.4265, -0.0669, -0.3646, 0.3417],
[-0.2440, -0.0738, -0.0657, -0.3823, 0.2283],
[-0.1722, -0.5323, -0.0610, -0.4117, 0.2283]],
[[-0.2800, 0.1378, -0.0963, -0.4706, 0.1150],
[-0.7469, 0.1731, -0.0845, -0.4176, 0.3417],
[-0.7829, -0.4265, -0.0692, -0.4176, 0.4550],
...,
[-0.2440, -0.0738, -0.0657, -0.3823, 0.2283],
[-0.1722, -0.5323, -0.0610, -0.4117, 0.2283],
[-0.1363, -0.8850, -0.0669, -0.4294, 0.1150]],
...,
[[-0.3518, 0.2083, -0.1386, 0.8479, -0.1684],
[-0.3518, 0.4552, -0.1398, 0.9480, 0.0016],
[-0.2800, -0.4265, -0.1398, 0.9126, 0.0583],
...,
[-1.0343, -0.1443, -0.1433, 0.8479, 0.0016],
[-0.8906, 0.3847, -0.1445, 1.0304, -0.2251],
[-0.7829, -0.0385, -0.1433, 1.0127, -0.1117]],
[[-0.3518, 0.4552, -0.1398, 0.9480, 0.0016],
[-0.2800, -0.4265, -0.1398, 0.9126, 0.0583],
[-0.4596, -0.9202, -0.1410, 0.8479, 0.1150],
...,
[-0.8906, 0.3847, -0.1445, 1.0304, -0.2251],
[-0.7829, -0.0385, -0.1433, 1.0127, -0.1117],
[-0.8547, 0.2436, -0.1422, 0.9715, -0.0550]],
[[-0.2800, -0.4265, -0.1398, 0.9126, 0.0583],
[-0.4596, -0.9202, -0.1410, 0.8479, 0.1150],
[-0.6392, -0.5323, -0.1422, 0.8655, 0.0016],
...,
[-0.7829, -0.0385, -0.1433, 1.0127, -0.1117],
[-0.8547, 0.2436, -0.1422, 0.9715, -0.0550],
[-0.9984, -0.0033, -0.1422, 0.8597, 0.0583]]])
输出看起来像,其中将不同的时间步长1-6h进行了分组。我可以轻松更改它。
tensor([[[ -7.],
[ -9.],
[-11.],
[-13.],
[-13.]],
[[ -9.],
[-11.],
[-13.],
[-13.],
[-10.]],
[[-11.],
[-13.],
[-13.],
[-10.],
[ -9.]],
...,
[[-12.],
[-10.],
[-10.],
[-10.],
[ -9.]],
[[-10.],
[-10.],
[-10.],
[ -9.],
[ -8.]],
[[-10.],
[-10.],
[ -9.],
[ -8.],
[-10.]]])
现在我不知道如何使用LSTM结构进行多个时间步长预测。输出层应该是线性的。
批量大小对我来说并不重要,我认为目前可以。