【问题标题】:Understanding input shape to PyTorch LSTM了解 PyTorch LSTM 的输入形状
【发布时间】:2020-08-21 06:16:26
【问题描述】:

这似乎是 PyTorch 中关于 LSTM 的最常见问题之一,但我仍然无法弄清楚 PyTorch LSTM 的输入形状应该是什么。

即使在关注了几个帖子(123)并尝试了解决方案之后,它似乎也不起作用。

背景:我已经编码了一批大小为 12 的文本序列(可变长度),并使用 pad_packed_sequence 功能填充和打包了这些序列。每个序列的MAX_LEN 为 384,序列中的每个标记(或单词)的维度为 768。因此,我的批量张量可能具有以下形状之一:[12, 384, 768][384, 12, 768]

批处理将是我对 PyTorch rnn 模块(此处为 lstm)的输入。

根据 LSTMs 的 PyTorch 文档,它的输入维度是 (seq_len, batch, input_size),我理解如下。
seq_len - 每个输入流中的时间步数(特征向量长度)。
batch - 每批输入序列的大小。
input_size - 每个输入标记或时间步长的维度。

lstm = nn.LSTM(input_size=?, hidden_size=?, batch_first=True)

input_sizehidden_size 的确切值应该是什么?

【问题讨论】:

    标签: python pytorch lstm tensor


    【解决方案1】:

    图像传到CNN层和lstm层,特征图形状变化是这样的

    BCHW->BCHW(BxCx1xW), CNN 的输出形状的高度应为 1。 然后挤压高度的暗淡。 BCHW->BCW 在 rnn 中,形状名称更改,[batch ,seqlen,input_size],在图像中,[batch,width,channel], **BCW->BWC,**这是 LSTM 层的 batch_first 张量(如 pytorch)。 最后: BWC 是 [batch,seqlen,channel]。

    【讨论】:

      【解决方案2】:

      您已经解释了输入的结构,但您尚未在输入维度和 LSTM 的预期输入维度之间建立联系。

      让我们分解您的输入(为维度分配名称):

      • batch_size:12
      • seq_len: 384
      • input_size/num_features:768

      这意味着 LSTM 的input_size 需要为 768。

      hidden_size 不取决于您的输入,而是取决于 LSTM 应该创建多少特征,然后将其用于隐藏状态和输出,因为这是最后一个隐藏状态。您必须决定要为 LSTM 使用多少功能。

      最后,对于输入形状,设置batch_first=True 要求输入的形状为[batch_size, seq_len, input_size],在您的情况下为[12, 384, 768]

      import torch
      import torch.nn as nn
      
      # Size: [batch_size, seq_len, input_size]
      input = torch.randn(12, 384, 768)
      
      lstm = nn.LSTM(input_size=768, hidden_size=512, batch_first=True)
      
      output, _ = lstm(input)
      output.size()  # => torch.Size([12, 384, 512])
      

      【讨论】:

      • 官方文档解释“输入形状(seq_len,batch,input_size)”。所以,我认为输入形状应该是 (384, 12, 768)。 pytorch.org/docs/stable/generated/torch.nn.LSTM.html
      • 对不起,我意识到batch_first 选项。此参数替换 seq_len 和 batch。所以,你是对的。
      猜你喜欢
      • 2017-01-12
      • 2020-10-03
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多