在PyTorch中准备序列解码器到序列网络

时间:2018-09-21 06:18:55

标签: keras lstm pytorch recurrent-neural-network seq2seq

我正在Pytorch中使用Sequence to Sequence模型。序列到序列模型由一个编码器和一个解码器组成。

编码器转换(batch_size X input_features X num_of_one_hot_encoded_classes) -> (batch_size X input_features X hidden_size)

解码器将采用此输入序列并将其转换为(batch_size X output_features X num_of_one_hot_encoded_classes)

一个例子就像-

enter image description here

因此在上面的示例中,我需要将22个输入要素转换为10个输出要素。在Keras中,可以使用RepeatVector(10)完成。

一个例子-

model.add(LSTM(256, input_shape=(22, 98)))
model.add(RepeatVector(10))
model.add(Dropout(0.3))
model.add(LSTM(256, return_sequences=True))

尽管,我不确定这是否是将输入序列转换为输出序列的正确方法。

所以,我的问题是-

  • 将输入序列转换为的标准方法是什么 输出的。例如。从(batch_size,22,98)->(batch_size, 10、98)?还是应该准备解码器?

编码器代码段(用Pytorch编写)-

class EncoderRNN(nn.Module):
    def __init__(self, input_size, hidden_size):
        super(EncoderRNN, self).__init__()
        self.hidden_size = hidden_size
        self.lstm = nn.LSTM(input_size=input_size, hidden_size=hidden_size,
          num_layers=1, batch_first=True)

    def forward(self, input):
        output, hidden = self.lstm(input)
        return output, hidden

0 个答案:

没有答案