我有一个表示许多时间段内数值的数据框,并且已经格式化了该数据框,将其表示为先前值的串联。例如:
+------+------+------+
| t1 | t2 | t3 |
+------+------+------+
| 4 | 7 | 10 |
+------+------+------+
| 7 | 10 | 8 |
+------+------+------+
| 10 | 8 | 11 |
+------+------+------+
...
当我格式化数据集以使用LSTM时,我将其整形为3维矢量[样本,时间步长,特征]。
但是,对于时间步长和功能,我必须赋予哪个值?我应该学习最后3个元素,所以特征应该是3吗?
当我有了这个时:
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
答案 0 :(得分:0)
我尝试解释一个例子。因此,假设我们对温度和压力进行了一些测量,并希望预测将来的某个温度。我们有两个功能(温度和压力)。因此,我们可以使用它们来输入LSTM并尝试进行预测。现在我不确定您对LSTM理论的看法如何,但是在游戏中有两个变量,单元状态C和先前的输出h(t-1)。我们集中于h(t-1)。因此,您给了LSTM细胞(现在假设只有一个神经元)输入(温度和压力)。 LSTM会产生输出和单元状态,现在,如果您将时间步调设为1,则在为LSTM提供新输入时,输出将仅取决于单元状态和输入。但是,如果您将时间步长设置为5。第二个输入将取决于单元状态,输入和先前的输出。第三输出将取决于第二输出,电池状态,电流输入。当您再次依赖于输入和单元状态时,此序列在第六次输入时继续。这些h(t-1)的东西称为短时记忆。因此,如果将时间步长设置为1,则会失去记忆。
修改 不好意思,我没有以正确的方式查看您的数据。您有一个特征,t和三个步骤。但是,您的构图方式不正确,您将三个t值视为单独的特征,并向它们提供了LSTM。但是您可以改为将数据整形为样本x 3 x1。因此,您将LSTM的第一个样本的t1输入到第一个样本的下一个t2,但是LSTM的输出将受到上一时间步长的输出的影响。