当我从 Pytorch 运行 Transformer_tutorial 代码时 (https://pytorch.org/tutorials/beginner/transformer_tutorial.html),我在 build_vocab_from_iterator 中遇到了问题。
from torchtext.datasets import WikiText2
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
train_iter = WikiText2(split='train')
tokenizer = get_tokenizer('basic_english')
vocab = build_vocab_from_iterator(map(tokenizer, train_iter), specials=['<unk>'])
AttributeError: 'NoneType' object has no attribute 'Lock'
This exception is thrown by __iter__ of _MemoryCellIterDataPipe(remember_elements=1000, source_datapipe=_ChildDataPipe)
我尝试使用其他 torchtext.dataset,例如以下代码:
from torchtext.datasets import IMDB
train_iter = IMDB(split='train')
def tokenize(label, line):
return line.split()
tokens = []
for label, line in train_iter:
tokens += tokenize(label, line)
仍然返回相同的错误。我在 Google Colab 中运行了所有代码。
我尝试在不同版本的pytorch和相应的pytorchtext中运行代码,但失败了。如果您能给我一些帮助,我真的很感激。谢谢!
在我的例子中,代码通过在 google colab 中重新启动运行时来运行,大多数情况下,获取 pytorch 数据集的代码会出现错误,并且通过重新启动运行时可以轻松纠正。
希望对你有帮助
问题出在 torchtext 数据集上。我建议你从Hugging Face下载同样的东西,很有可能在那里。
就像代替
from torchtext.datasets import WikiText2
一样,您可以执行以下操作 -
train_iter = load_dataset("mindchain/wikitext2", split='train')
管道的其余部分可以保持不变,将起作用。