You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch LSTM输入格式验证与相关疑问咨询

探究PyTorch LSTM输入规则的疑问

我正在研究PyTorch LSTM的输入规则,已查阅官方文档,希望有经验的开发者确认或修正我对输入格式的理解。先依照文档定义符号:

  • N = 批量大小(Batch Size)
  • L = 序列长度(Sequence Length)
  • H-IN = input_size,即输入x的预期特征数(x为t时刻的输入)

验证示例

示例1

设置批量大小N=3,每个序列长度L=2,每个时间步为单个数值,输入张量构造如下:

batch_tensor = torch.tensor([
    # 第一个序列 [1, 2],长度为2,1是第一个时间步,2是第二个时间步
    [[1], [2]],

    # 第二个序列 [4, 5],长度为2,4是第一个时间步,5是第二个时间步    
    [[4], [5]],  

    # 第三个序列 [7, 8],长度为2,7是第一个时间步,8是第二个时间步    
    [[7], [8]]  
], dtype=torch.float32)

print(batch_tensor.shape)

# 输出 -> torch.Size([3, 2, 1])

# 每个时间步维度为1,所以input_size设为1
lstm = nn.LSTM(input_size=1, hidden_size=4, num_layers=1, batch_first=True)

这里我设置input_size=1,因为每个时间步的特征维度是1。

示例2

设置批量大小N=3,每个序列长度L=2,每个时间步为二维向量,输入张量构造如下:

batch_tensor = torch.tensor([
    # 第一个序列 [[1, 1.5], [2, 2.5]],长度为2,[1, 1.5]是第一个时间步,[2, 2.5]是第二个时间步
    [[1, 1.5], [2, 2.5]],

    # 第二个序列 [[4, 4.5], [5, 5.5]],长度为2,[4, 4.5]是第一个时间步,[5, 5.5]是第二个时间步
    [[4, 4.5], [5, 5.5]],

    # 第三个序列 [[7, 7.5], [8, 8.5]],长度为2,[7, 7.5]是第一个时间步,[8, 8.5]是第二个时间步
    [[7, 7.5], [8, 8.5]]
], dtype=torch.float32)

print(batch_tensor.shape)

# 输出 -> torch.Size([3, 2, 2])

# 每个时间步维度为2,所以input_size设为2
lstm = nn.LSTM(input_size=2, hidden_size=4, num_layers=1, batch_first=True)

这里我设置input_size=2,因为每个时间步的特征维度是2。

问题

  1. 上述两个输入格式示例是否正确?
  2. 在两个示例中,我尝试将input_size设置为2000时代码仍能运行,请问这是为什么?

回答

  1. 两个示例的输入格式完全正确。因为你设置了batch_first=True,输入张量的维度顺序是[N, L, H-IN],和定义的符号完全对应:

    • 示例1中[3,2,1]对应N=3,L=2,H-IN=1,input_size=1匹配,符合LSTM的输入要求;
    • 示例2中[3,2,2]对应N=3,L=2,H-IN=2,input_size=2匹配,同样正确。
  2. 代码能运行是因为PyTorch在初始化LSTM层时不会自动校验输入张量的特征维度,只有当你把输入张量传入LSTM层进行前向传播时,才会触发维度不匹配的报错。比如你只初始化了lstm = nn.LSTM(input_size=2000, ...)但没执行output, (h_n, c_n) = lstm(batch_tensor),PyTorch不会检查维度是否匹配。一旦执行前向传播,就会抛出类似RuntimeError: input.size(-1) must be equal to input_size的错误,因为输入张量的最后一维(特征数)和input_size不匹配。


内容的提问来源于stack exchange,提问作者PatelisGM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:53:18