相关疑难解决方法(0)

如何正确地为PyTorch中的嵌入,LSTM和线性层提供输入?

我需要澄清一下如何使用torch.nn模块的不同组件正确准备批量培训的输入.具体来说,我正在寻找为seq2seq模型创建编码器 - 解码器网络.

假设我有一个包含这三层的模块,按顺序:

  1. nn.Embedding
  2. nn.LSTM
  3. nn.Linear

nn.Embedding

输入: batch_size * seq_length
输出: batch_size * seq_length * embedding_dimension

我在这里没有任何问题,我只想明确输入和输出的预期形状.

nn.LSTM

输入: seq_length * batch_size * input_size(embedding_dimension在这种情况下)
输出: seq_length * batch_size * hidden_size
last_hidden_​​state: batch_size * hidden_size
last_cell_state: batch_size * hidden_size

要使用Embedding图层的输出作为图层的输入LSTM,我需要转置轴1和2.

我在网上发现的许多例子都有类似的东西x = embeds.view(len(sentence), self.batch_size , -1),但这让我很困惑.该视图如何确保同一批次的元素保留在同一批次中?当尺寸len(sentence)self.batch尺寸相同时会发生什么?

nn.Linear

输入: batch_size x input_size(在这种情况下LSTM的hidden_​​size或??)
输出: batch_size xoutput_size

如果我只需要last_hidden_stateLSTM话,我可以把它作为输入nn.Linear.

但是,如果我想利用输出(其中包含所有中间隐藏状态),那么我需要改变 …

lstm pytorch

20
推荐指数
1
解决办法
7601
查看次数

标签 统计

lstm ×1

pytorch ×1