运行noise2inverse的03_train(MSD网络)时遇ImportError求助
解决noise2inverse中MSD网络导入的ImportError错误
这个错误是因为msd_pytorch的CUDA扩展与当前PyTorch版本不兼容,导致找不到PyTorch内部的符号_ZN2at15checkAllSameGPUEPKcN3c108ArrayRefINS_9TensorArgEEE。以下是具体解决方案:
解决方案1:匹配PyTorch与CUDA版本
- 卸载当前环境的PyTorch:
pip uninstall torch torchvision torchaudio - 根据本地CUDA版本安装兼容的PyTorch(以CUDA 11.3为例,对应PyTorch 1.10.x):
注意:如果CUDA版本不同,替换对应的PyTorch版本号和CUDA标识。pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
解决方案2:从源码重新编译msd_pytorch
预编译的msd_pytorch二进制包可能和本地环境不匹配,建议手动编译:
- 卸载已安装的
msd-pytorch:pip uninstall msd-pytorch - 克隆
msd_pytorch源码仓库:git clone https://github.com/ahendriksen/msd_pytorch.git - 进入目录并编译安装:
编译过程中确保当前环境的PyTorch和CUDA可用,cd msd_pytorch python setup.py installnvcc命令能正常执行。
解决方案3:检查CUDA环境一致性
- 运行以下命令查看CUDA版本:
nvcc --version - 运行Python代码查看PyTorch关联的CUDA版本:
两者版本必须一致,否则会出现兼容性问题。如果不一致,调整PyTorch版本或CUDA版本。import torch print(torch.version.cuda)
解决方案4:临时使用CPU模式(仅用于测试)
如果只是临时验证代码,可以强制使用CPU运行:
- 修改训练代码中初始化模型的部分,将
parallel=multi_gpu改为parallel=False; - 或者在导入模型前添加:
此方案会降低训练速度,仅适合排查问题。import torch torch.set_default_tensor_type('torch.FloatTensor')
内容的提问来源于stack exchange,提问作者aknahin
相关产品推荐
相关产品推荐

