You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行PyTorch Transformer教程代码时遇'NoneType'无Lock属性错误

解决torchtext迭代数据集时的'NoneType'无'Lock'属性错误

这个错误是由于torchtext的DataPipe在Colab环境中初始化多线程锁失败导致的,以下是两种直接有效的解决方式:

针对WikiText2数据集的修改

将数据集转换为普通Python列表,绕过DataPipe的内部迭代逻辑:

from torchtext.datasets import WikiText2
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator

# 转换为普通列表避免锁问题
train_iter = list(WikiText2(split='train'))
tokenizer = get_tokenizer('basic_english')

vocab = build_vocab_from_iterator(map(tokenizer, train_iter), specials=['<unk>'])

针对IMDB数据集的修改

同样先将数据集转为列表再处理:

from torchtext.datasets import IMDB

# 转换为普通列表
train_iter = list(IMDB(split='train'))

def tokenize(label, line):
    return line.split()

tokens = []
for label, line in train_iter:
    tokens += tokenize(label, line)

原理:DataPipe的迭代依赖多进程/线程锁机制,但Colab环境的限制会导致锁对象初始化失败。将数据集转为普通列表后,使用原生Python迭代逻辑,完全避开了DataPipe的锁相关问题。

内容的提问来源于stack exchange,提问作者John Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:42:39