Google Colab运行prune-then-distill代码报错:ValueError: None.json不存在
解决 ValueError: None.json is not exists! 问题
问题根源
从你贴的代码片段能看出,这是代码逻辑bug导致的:
当你用--pre_train参数启动但未指定hparam_fname时,程序会自动尝试加载experiments/hyperparam/train_default.json,但如果该文件不存在,报错信息错误地引用了self.opt.hparam_fname(此时值为None),才会出现None.json的诡异提示。另外也有可能是你克隆的仓库里根本没有train_default.json这个默认配置文件,或者路径存在偏差。
解决方法
方法1:手动指定配置文件(快速绕开)
运行命令时显式指定预训练对应的配置文件名,比如仓库里存在train_default.json的话,添加--hparam_fname train_default参数:
python prune-then-distill/main.py --pre_train --hparam_fname train_default
不确定有哪些可用配置文件的话,先查看目标目录内容:
ls prune-then-distill/experiments/hyperparam
方法2:修复代码的错误提示(根本解决)
修改prune-then-distill/utils/platforms.py中hparam_setup函数的报错语句,把错误信息里的self.opt.hparam_fname换成当前检查的path,这样能看到真正找不到的文件名,方便定位问题:
# 原错误代码: raise ValueError(f"{self.opt.hparam_fname}.json is not exists!") # 修改为: raise ValueError(f"配置文件不存在:{path}")
修改后重新运行,就能明确看到缺失的具体文件,再对应补充或修正路径。
方法3:补充默认配置文件
如果仓库确实缺少train_default.json,可以参考项目中其他配置文件的格式手动创建,或者联系项目作者获取默认配置。
内容的提问来源于stack exchange,提问作者Arathi Rathod
相关产品推荐
相关产品推荐

