TensorboardX中FileWriter初始化报错:意外关键字参数'log_dir'
解决TypeError: init() got an unexpected keyword argument 'log_dir'问题
这个问题我碰到过好几次了,本质是参数名不匹配导致的,咱们一步步来拆解解决:
问题根源
从报错信息和你提供的代码片段来看,错误出在C:\Users\dell\Anaconda3\envs\tensorenviron\lib\site-packages\tensorboardX\writer.py第310行的FileWriter调用上:你通过**self.kwargs传入的参数里包含了log_dir,但tensorboardX的FileWriter初始化方法只接受名为logdir(不带下划线)的参数,完全不认识log_dir这个字段。
修复方案
你有两种简单的解决方式:
方案1:修正初始化时的参数名
检查你创建这个writer实例的代码,如果是类似下面这样写的:
your_writer = YourCustomWriter(log_dir="./path/to/logs")
直接把log_dir改成logdir即可:
your_writer = YourCustomWriter(logdir="./path/to/logs")
方案2:在_get_file_writer方法中转换参数名
如果没办法修改外部的初始化传参,那就在_get_file_writer方法里,创建FileWriter之前添加一段参数转换逻辑:
# 在创建FileWriter的代码前加入这段 if 'log_dir' in self.kwargs: # 将log_dir替换成FileWriter支持的logdir self.kwargs['logdir'] = self.kwargs.pop('log_dir')
这样即使外部传入的是log_dir,也会被自动转换成logdir传给FileWriter。
验证
修改完之后重新运行代码,FileWriter就能正确识别参数,不会再抛出这个类型错误了。
内容的提问来源于stack exchange,提问作者Sandip Deyasi
相关产品推荐
相关产品推荐

