为什么我使用 PyTorch RNN 会出现隐藏大小错误

问题描述 投票:0回答:1

我正在尝试构建一个用于下一个单词预测的 RNN,遵循下一个字符预测示例(tutorialgithubcolab(运行时间约 1 分钟))。

在示例中,batch_size、sequence_length 和 nb_features 的输入形状为 (3,14,17)。然后,n_layers、batch_size 和hidden_dim 的隐藏大小定义为(1,3,12)。

除了我的batch_size为1之外,我遵循了这个示例。此外,由于我使用的是batch_size 1,所以我的输入序列没有被填充。所以我运行我的train()方法,并且在我的第一个训练数据示例中收到错误:

RuntimeError: Expected hidden size (1, 25, 12), got [1, 1, 12]
(25 是序列长度)。

因此,pytorch 似乎要求我给出序列长度作为隐藏层的维度,但在我遵循的示例代码中,情况并非如此,并且代码工作正常。

我做错了什么?

此外,这是我正在使用的colab(运行时间〜1分钟)。

machine-learning deep-learning pytorch nlp recurrent-neural-network
1个回答
0
投票

我使用的示例代码和我无法计算的代码之间有两个主要区别:
1-

batch_first=True
在启动模型时传递给RNN
2-目标预处理必须与输入预处理不同:我使用稀疏one-hot向量对单词进行编码,虽然稀疏向量在输入中工作,但目标必须仅使用one-hot中单词的索引进行编码而不是整个单热向量

感谢@erip 帮助调试这个!

© www.soinside.com 2019 - 2024. All rights reserved.