如何在不在 PyTorch 中按长度重新排序的情况下将批次输入 LSTM?

How can I feed a batch into LSTM without reordering them by length in PyTorch?

我是Pytorch的新手,遇到了一些麻烦。 我想建立一个排名模型来判断问题及其答案(包括正确答案和错误答案)的相似性。我使用 LSTM 作为编码器。

我的模型中有两个 LSTM,它们共享权重。所以我的模型的输入是两个序列(问题和答案)。但是如果我用batch的话,重新排序会打乱问题和答案的对应关系。 我该怎么办?

也许起点可以是使用与此处类似的 RNN 包装器 https://github.com/facebookresearch/DrQA/blob/master/drqa/reader/layers.py#L20 您可以分别对问题和答案进行编码(此模块将在内部打包和解包并负责排序)然后您可以处理编码表示

我已经为 NLP 上传了一些有用的 torch 实用程序。有些可能对 pack_padded_sequence 有用:https://github.com/wjpjet/torch_utilities/blob/master/torch_util.py