使用PyTorch和Lightning AI构建LSTM 第5部分:通过训练改进预测 - DEV Community
使用PyTorch和Lightning AI构建LSTM 第5部分:通过训练改进预测 - DEV Community
在上一篇文章中,我们运行了模型并检查了其预测的准确度。
本文将进行模型训练。
首先,创建训练数据。
inputs = torch.tensor([
[0., 0.5, 0.25, 1.],
[1., 0.5, 0.25, 1.]
])
这些数据代表两家公司在第1天到第4天的股票价格。
接下来,创建标签,即我们希望LSTM(长短期记忆网络)预测的值。
labels = torch.tensor([0., 1.])
这里,我们希望LSTM预测:
- 公司A为
0 - 公司B为
1
现在,我们将输入和标签组合成一个名为 dataset 的 TensorDataset。
dataset = TensorDataset(inputs, labels)
dataloader = DataLoader(dataset)
正如我们在之前的文章中讨论的,DataLoader 非常有用,原因如下:
- 它们可以方便地批量访问数据。
- 它们可以在每个epoch(训练周期)开始时打乱数据。
- 当我们想快速调试训练过程时,它们允许我们使用数据的一小部分。
接下来,创建一个Lightning训练器。
trainer = L.Trainer(max_epochs=2000)
这里,我们告诉Lightning最多训练2000个epoch。
在训练过程中,反向传播(backpropagation)用于优化LSTM中所有可训练的权重和偏置。
要开始训练,只需调用训练器的 fit() 方法。
trainer.fit(model, train_dataloaders=dataloader)
训练完成后,我们可以像之前一样打印预测结果。
print("\nComparing observed and predicted values")
print(
"Company A: Observed = 0, Predicted =",
model(torch.tensor([0., 0.5, 0.25, 1.])).detach()
)
print(
"Company B: Observed = 1, Predicted =",
model(torch.tensor([1., 0.5, 0.25, 1.])).detach()
)
输出结果如下:
Comparing observed and predicted values
Company A: Observed = 0, Predicted = tensor(0.0003)
Company B: Observed = 1, Predicted = tensor(0.9287)
可以看到,训练后预测结果有了显著改进。模型现在产生的数值更接近期望输出。
在下一篇文章中,我们将探索TensorBoard来分析训练过程中发生了什么。
