NLP开发报错TypeError: __init__()收到意外关键字参数'logdir'如何解决
报错信息:TypeError: init() got an unexpected keyword argument 'logdir'
报错核心原因
该报错本质是你实例化某类时传入了logdir参数,但对应类的__init__构造方法并未定义该入参,NLP开发场景下该报错大多出现在实例化日志记录器、训练可视化工具、训练框架封装类(比如Hugging Face Trainer、PyTorch Lightning Trainer)的场景。
可行解决方法
- 核对参数名,替换为目标类支持的正确参数名
很多工具类的日志路径参数名不是logdir,比如部分版本的PyTorch Lightning Trainer用log_dir(中间带下划线),Hugging Face TrainingArguments的日志路径参数为logging_dir,仅旧版本TensorBoard SummaryWriter的参数为logdir,替换为对应类支持的参数名即可解决问题。 - 调整依赖库版本到兼容版本
部分类会在版本迭代中移除logdir参数,如果你确认当前版本的类已经不支持该参数,又不想修改代码,可以回退依赖库到支持logdir的旧版本,比如执行pip install tensorboard==2.8.0(根据实际工具替换包名和对应兼容版本号)即可。 - 直接移除不被支持的
logdir参数
如果你没有自定义日志存储路径的需求,直接删除构造函数中传入的logdir参数即可,类会使用默认路径存储日志文件。 - 自定义类场景下补充入参定义
如果报错的是你自己封装的自定义类,直接在类的__init__方法中添加logdir入参,补充对应的日志路径赋值逻辑即可。
内容的提问来源于stack exchange,提问作者Zhang Qiyuan
相关产品推荐
相关产品推荐

