Python Transformers文本生成报错'dict object has no attribute architectures'如何解决
报错解决方案
错误原因
核心报错AttributeError: 'dict' object has no attribute 'architectures'的触发原因是:transformers库pipeline方法的config参数要求传入PretrainedConfig类的实例,你直接传入普通字典不符合参数要求。
开头的CUDA相关警告不影响代码运行,没有NVIDIA显卡或者不需要用GPU加速可以直接忽略。
解决方法
有两种可行的修改方案:
- 方案1:将生成长度参数直接传给pipeline或者生成调用逻辑,不需要单独修改config
- 方案2:先加载官方配置对象,修改参数后再传入pipeline
修正后完整代码(最简方案)
from transformers import pipeline # 把max_length直接作为pipeline的参数传入即可,不需要放在config字典中 pipe = pipeline('text-generation', model='dbmdz/german-gpt2', tokenizer='dbmdz/german-gpt2', max_length=800) text = pipe("Der Sinn des Lebens ist es")[0]['generated_text'] print(text)
如果需要屏蔽开头的CUDA警告,可以在代码最开头加入以下两行:
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
内容的提问来源于stack exchange,提问作者Lukas Koch-Schulte
相关产品推荐
相关产品推荐

