Python BucketIterator未返回正确大小的批次
我正在Python BucketIterator未返回正确大小的批次,python,nlp,pytorch,torchtext,Python,Nlp,Pytorch,Torchtext,我正在PyTorch中实现一个简单的LSTM语言模型,并想查看torchtext提供的BucketIterator 结果表明,返回的批具有我的整个语料库的大小,因此在初始化过程中我一定做错了什么 我已经使用了BPTTIterator了,但是由于我想能够训练成批完整的句子,我认为BucketIterator应该是一个不错的选择 我使用以下设置,我的语料库是一个简单的txt文件,每行都包含句子 field = Field(use_vocab=True, batch_first=True) corpu
PyTorch
中实现一个简单的LSTM语言模型,并想查看torchtext
提供的BucketIterator
结果表明,返回的批具有我的整个语料库的大小,因此在初始化过程中我一定做错了什么
我已经使用了BPTTIterator
了,但是由于我想能够训练成批完整的句子,我认为BucketIterator
应该是一个不错的选择
我使用以下设置,我的语料库是一个简单的txt文件,每行都包含句子
field = Field(use_vocab=True, batch_first=True)
corpus = PennTreebank('project_2_data/train_lines.txt', field)
field.build_vocab(corpus)
iterator = BucketIterator(corpus,
batch_size=64,
repeat=False,
sort_key=lambda x: len(x.text),
sort_within_batch=True,
)
我希望这个迭代器中的一批具有shape(batch\u size,max\u len)
,但它将整个语料库附加到shape(1,corpus\u size)
的一个张量中
我的设置中缺少什么
编辑:似乎PenntreBank
对象与BucketIterator
不兼容(如此处所述,它只包含1个示例
)。只使用一个字段的表格数据集
使其工作
如果有人知道如何在torchtext
中以更优雅的方式使用填充语句批量进行语言建模,我很乐意听到 同样的问题。