pytorch lstm 单变量 多步预测后一位,给出代码
时间: 2023-05-19 22:04:16 浏览: 101
以下是一个简单的 PyTorch LSTM 单变量多步预测后一位的代码示例:
```python
import torch
import torch.nn as nn
# 定义 LSTM 模型
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.linear = nn.Linear(hidden_size, output_size)
def forward(self, input):
lstm_out, _ = self.lstm(input.view(len(input), 1, -1))
output = self.linear(lstm_out.view(len(input), -1))
return output[-1]
# 定义训练数据
data = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])
input_data = data[:-1].view(len(data)-1, 1, 1)
target_data = data[1:].view(len(data)-1, 1)
# 定义模型和优化器
model = LSTM(1, 10, 1)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.1)
# 训练模型
for epoch in range(100):
optimizer.zero_grad()
output = model(input_data)
loss = criterion(output, target_data)
loss.backward()
optimizer.step()
# 预测后一位
with torch.no_grad():
future_data = torch.tensor([11.0])
future_input = future_data.view(1, 1, 1)
future_output = model(future_input)
print(future_output.item())
```
这个代码示例使用了 PyTorch 的 nn.LSTM 模块来定义 LSTM 模型,使用均方误差损失函数和 Adam 优化器来训练模型,并使用训练好的模型来预测序列中的下一个值。
阅读全文