更改.view()以将[1,批量大小,embedding_size]反映为第一个维度。
另外,你不需要初始化零张量,如果没有提供张量作为初始张量,则pytorch使用零张量。
当你创建 LSTM ,国旗 batch_first 没有必要,因为它假定您输入的形状不同。来自文档:
LSTM
batch_first
如果为True,则输入和输出张量为(批量, seq,功能)。默认值:False
将LSTM创建更改为:
self.lstm = nn.LSTM(input_size=embedding_size, num_layers=1, hidden_size=hidden_size)
此外,还有一个类型错误。当你创建 decoder_input 运用 torch.from_numpy() 它有一个 dtype=torch.float64 ,而 decoder_input 有默认值 dtype=torch.float32 。更改您创建的行 decoder_input 喜欢的东西
decoder_input
torch.from_numpy()
dtype=torch.float64
dtype=torch.float32
decoder_input = Variable(torch.from_numpy(decoder_input)).cuda().float()
随着这两个变化,它应该工作正常:)