PyTorch 中 LSTM 模型参数解析
在使用 PyTorch 的 nn.LSTM 时,了解其各个参数及其作用至关重要。以下是对这些参数的详细解释:
必须实例化模型时必须的参数:
- input_size: 这是输入数据的特征维度。例如,如果你的数据是词向量,且每个词向量有 10 个维度,则
input_size=10。 - hidden_size: 这是 LSTM 隐藏层中每个单元的维度。这个值可以根据需要调整,以控制模型的复杂度和表达能力。
可选参数:
- num_layers (默认值为 1): 这是指 LSTM 层的数量。至少有一个完整的 LSTM 层,但可以有多个层来提高模型的捕捉能力和泛化能力。
- bias (默认值为 True): 是否在每个 LSTM 单元中包含偏置项。通常设置为
True。 - batch_first (默认值为 False): 如果为
True,则输入和输出的数据格式是(batch, seq_len, input_size),否则是(seq_len, batch, input_size)。
必须运行模型时必须的参数:
- input: 这是你要输入到 LSTM 中的数据。它的形状通常是
(seq_len, batch, input_size)或(batch, seq_len, input_size),具体取决于batch_first的设置。 - (h0, c0): 这是初始隐藏状态和细胞状态。它们的形状都是
(num_layers * num_directions, batch, hidden_size)。
示例代码解析
以下是一个简单的示例,展示了如何使用 nn.LSTM:
import torch
import torch.nn as nn
# 定义 LSTM 模型
input_size = 10
hidden_size = 20
num_layers = 2
lstm = nn.LSTM(input_size, hidden_size, num_layers)
# 准备输入数据
seq_len = 5
batch_size = 3
input_data = torch.randn(seq_len, batch_size, input_size)
# 初始化隐藏状态和细胞状态
h0 = torch.zeros(num_layers, batch_size, hidden_size)
c0 = torch.zeros(num_layers, batch_size, hidden_size)
# 运行 LSTM 模型
output, (hn, cn) = lstm(input_data, (h0, c0))
print(output.size(), hn.size(), cn.size())
参数解释
- input:
torch.randn(seq_len, batch_size, input_size)


