运行BERT文本嵌入代码时DistilBertTokenizer对象不可调用报错求助
报错原因与解决方案
核心原因
你当前Conda环境中的transformers库版本与代码写法不兼容,安装torchvision、PIL时触发的依赖自动调整大概率将transformers降级到了不支持直接调用分词器实例的旧版本。
解决步骤
- 先确认当前
transformers版本,在环境终端执行命令:
若版本低于4.0.0即可确定为版本兼容问题。pip show transformers - 升级到适配版本,执行命令:
Conda环境也可使用对应安装命令:pip install transformers>=4.10.0conda install -c huggingface transformers - 若暂时无法升级库,可直接替换报错行写法兼容旧版本,两种写法二选一即可:
# 写法1:显式调用__call__方法 inputs = text_tokenizer.__call__(sentences, return_tensors="pt", padding=True) # 写法2:使用全版本兼容的batch_encode_plus方法 inputs = text_tokenizer.batch_encode_plus(sentences, return_tensors="pt", padding=True, truncation=True) - 若上述操作后仍报错,排查代码中是否存在变量名冲突,检查是否有其他位置定义了同名
text_tokenizer变量覆盖了分词器实例,或是导入了其他同名类产生冲突。
内容的提问来源于stack exchange,提问作者amitgh
相关产品推荐
相关产品推荐

