machine-learning - LSTM:多步预测的训练和反向传播
问题描述
我正在训练一个用于时间序列预测的 LSTM。我不仅需要预测下一个时间步长,还需要预测一系列未来的时间步长。也就是说,从1, 2, 3, 4
我需要预测的一组输入中5, 6, 7, 8, 9
。我的数据集采用以下格式:
input label
1, 2, 3, 4 5
2, 3, 4, 5 6
为了训练它,我定义了一个n
决定输入大小的窗口大小和一个m
决定未来我想要预测多少步的窗口大小。所以,这就是我为一批做的事情:
for _ in range(m):
set hidden_state = 0
input prediction label loss
1, 2, 3, 4 -> 8 5 mse(label, prediction)
2, 3, 4, 8 -> 11 6 mse(label, prediction)
3, 4, 8, 11 -> 2 7 mse(label, prediction)
...
...
loss = mse(total_loss)
loss.backward()
[我每次定义输入的方式非常重要]
对于每个预测,我计算损失并将预测作为下一个输入的最后一个值。损失被添加到 total_loss 缓冲区并在最后取平均值。迭代后m
,我反向传播 total_loss(梯度为每个预测和 hidden_state 存储)并重新开始一个新批次,设置 hidden_state = 0。
这个选择背后的基本原理是损失编码算法预测整个系列的好坏而不仅仅是下一个时间步长(就像我总是计算 的损失一样1,2,3,4 -> 5
)。我不太确定这是正确的方法,因为输入主要由第一步之后的预测组成。
这是训练时间序列的常用方法吗?这种方法有什么具体问题吗?
解决方案
推荐阅读
- excel - 输入框搜索用户表单记录然后从工作表中删除?
- pdf - 在 Chrome 中呈现但在 Acrobat 中不呈现的 PDF
- php - 如何用符号 _ 完成 html 行
- python - 如何在 Python MXNet 中查找内存泄漏?
- powershell - 如何删除每个任务的所有任务触发器?
- javascript - 需要一个空类,在同一目录中
- wpf - 您可以为路径的各个部分设置样式吗?
- mpdf - 解析使用 GD 库创建的临时文件图像对象以解析 PNG 图像的 PNG 图像时出错
- firebase - 使用颤振(或 Android)的 Firebase 存储规则
- sql - 如何更快地搜索一个有 8000 万条记录的表?