我在 Pytorch 中使用序列到序列模型。序列到序列模型由编码器和解码器组成。
编码器转换一个(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)
一个例子就像 -
所以在上面的例子中,我需要将 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