升级到PyTorch 1.9时无法从torch._six导入int_classes报错如何解决
报错修复方案
问题原因
该错误属于PyTorch版本兼容问题:你使用的PyTorch 1.9.0版本调整了内部工具模块torch._six的导出内容,移除了对外暴露的int_classes类型别名,而所使用的proxynca_pp仓库代码是基于更旧版本PyTorch编写的,沿用了旧的导入逻辑,因此触发导入失败。
修改步骤
- 打开报错指向的代码文件:
/scratch3/research/code/fashion/proxynca_pp/dataset/utils.py - 找到第8行的导入语句:
from torch._six import int_classes as _int_classes
- 将上述语句替换为兼容新旧版本的代码:
try: from torch._six import int_classes as _int_classes except ImportError: _int_classes = int
- 若后续运行还出现
torch._six相关的其他导入报错(如string_classes导入失败),可按照相同逻辑处理,string_classes对应替换为str即可。
运行验证
修改完成后重新执行原启动命令:
CUDA_VISIBLE_DEVICES=0,1 python train.py --dataset cub --config config/cub.json --mode train --apex --seed 0
即可正常启动训练。
内容的提问来源于stack exchange,提问作者Mona Jalal
相关产品推荐
相关产品推荐

