我正在尝试使用pytorch-nlp(https://pytorchnlp.readthedocs.io/en/latest/)构建神经网络。 我的目的是建立一个像这样的网络:
- 嵌入层(使用 pytorch 标准层和
from_pretrained
方法) - 采用 LSTM 的编码器(也使用标准
nn.LSTM
) - 注意力机制(使用
torchnlp.nn.Attention
) - 解码器 siwth LSTM(作为编码器)
- 线性图层标准
我在输入句子的维度(每个单词都是一个向量)方面遇到了一个主要问题问题,但最重要的是注意力层:我不知道不知道如何声明它,因为我需要编码器输出的精确尺寸,但序列具有不同的尺寸(对应于句子具有不同数量的单词的事实)。
我尝试查看 torch.nn.utils.rnn.pad_packed_sequence
和 torch.nn.utils.rnn.pack_padded_sequence
因为它们受 LSTM 支持,但我找不到解决方案。
有人可以帮助我吗?
编辑
我考虑过将所有序列填充到特定维度,但我不想截断更长的序列,因为我想保留所有信息。
最佳答案
将所有序列填充到特定维度,您的方向是正确的。您必须选择一个大于“大多数”句子的维度,但您需要截断一些句子。这个blog article应该有帮助。
关于python - 使用 torchnlp 进行文本分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59215618/