报错背景:
我是在下载运行STANet网上找的遥感影像项目中出现的问题,既然是网上已有的成熟的项目,那大概率是环境问题而不是代码问题。所以此篇文章通过配置环境来解决问题:
排查问题的思路:
1、查了网上一篇博文:pytorch错误记录:TypeError: Cannot handle this data type: (1, 1, 64), |u1
说是需要版本回退,文中举的例子是pytorch1.7和pytorch1.10/pytorch1.11处理结果不一样,我当时用的python3.11,pytorch是2.1.2,所以初步思路是回退到pytorch1.7试试
使用pip命令回退到1.7,报错:Could not find a version that satisfies the requirement torch==1.7.0 (from versions: 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2),意思大概是在pip仓库里找不到1.7的版本
然后又用conda安装,还是找不到这个版本
试了conda config --add channels pytorch,没用
猜测是不是因为python版本不兼容导致的问题,于是在pytorch官网找了兼容的python版本
于是将python环境从3.11切换到3.9
conda activate env3.9
在网上找了1.7的安装包,网址是这个:下载对应的pytorch
cp指的是python版本,根据自己电脑系统下载,我这里是windows
python3.9环境下
# https://download.pytorch.org/whl/torch_stable.html
# 上面是下载torch-1.7.1+cpu-cp39-cp39-win_amd64.whl的地址
# 将本地的1.7.1的pytorch安装到环境中
pip install C:\Users\DIY-PC\Downloads\torch-1.7.1+cpu-cp39-cp39-win_amd64.whl
重新运行项目,报错:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchvision 0.16.2 requires torch==2.1.2, but you have torch 1.7.1+cpu which is incompatible.
ultralytics 8.1.4 requires torch>=1.8.0, but you have torch 1.7.1+cpu which is incompatible.
这个错误表明你环境中存在依赖冲突。torchvision 需要 torch 版本大于等于 1.8.0,而 ultralytics 则要求 torch 版本为 2.1.2。当前安装的 torch 版本是 1.7.1+cpu,导致了这个冲突。
所以需要把torchvision安装下兼容的版本:
# 下载对应的torchvision
pip install torchvision==0.9.1
至此,问题解决
总结:
回退pytorch版本有用,可以执行以下代码替换版本
python3.9环境下
# https://download.pytorch.org/whl/torch_stable.html
# 上面是下载torch-1.7.1+cpu-cp39-cp39-win_amd64.whl的地址
# 将本地的1.7.1的pytorch安装到环境中,需替换为自己本地的地址
pip install C:\Users\DIY-PC\Downloads\torch-1.7.1+cpu-cp39-cp39-win_amd64.whl
# 下载对应的torchvision
pip install torchvision==0.9.1