lstm训练代码 pytorch
时间: 2023-07-09 17:51:11 浏览: 48
以下是一个简单的 LSTM 训练代码的示例,使用 PyTorch 框架:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义 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.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]
# 实例化模型
input_size = 10
hidden_size = 20
output_size = 1
model = LSTM(input_size, hidden_size, output_size)
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 数据准备
inputs = [torch.randn(1, input_size) for _ in range(100)]
labels = [torch.randn(1, output_size) for _ in range(100)]
# 训练
for epoch in range(1000):
optimizer.zero_grad()
loss = 0
for i in range(len(inputs)):
output = model(inputs[i])
loss += criterion(output, labels[i])
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print('Epoch: {}, Loss: {}'.format(epoch, loss))
```
在这个示例中,我们定义了一个简单的 LSTM 模型,包含一个 LSTM 层和一个全连接层。然后,我们使用随机生成的数据进行训练,并使用均方误差损失函数和 Adam 优化器进行优化。在训练过程中,我们遍历所有输入并计算损失,然后通过反向传播和优化器更新模型参数。最后,我们打印出每 100 个 epoch 的损失。