用pytorch实现一个lstm时序预测模型
时间: 2023-05-17 14:03:15 浏览: 136
可以使用以下代码实现一个基于 PyTorch 的 LSTM 时序预测模型:
```
import torch
import torch.nn as nn
class LSTM(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(LSTM, self).__init__()
self.hidden_size = hidden_size
self.lstm = nn.LSTM(input_size, hidden_size)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, input):
lstm_out, _ = self.lstm(input.view(len(input), 1, -1))
output = self.fc(lstm_out.view(len(input), -1))
return output[-1]
model = LSTM(input_size=1, hidden_size=10, output_size=1)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# 训练模型
for epoch in range(100):
optimizer.zero_grad()
loss = 0
for i in range(len(train_data)-1):
input = train_data[i]
target = train_data[i+1]
output = model(input)
loss += criterion(output, target)
loss.backward()
optimizer.step()
# 预测
with torch.no_grad():
future = 100
input = train_data[-1]
predictions = []
for i in range(future):
output = model(input)
predictions.append(output.item())
input = output
```
其中,`input_size` 表示输入数据的维度,`hidden_size` 表示 LSTM 隐藏层的维度,`output_size` 表示输出数据的维度。在训练模型时,我们使用均方误差作为损失函数,使用 Adam 优化器进行参数更新。在预测时,我们使用训练好的模型对未来的数据进行预测。
阅读全文