错误发生的环境
先安装了tensorflow后安装pytorch时,使用tensorflow的gpu推理时报错
为什么有这个问题
我是在安装tensorflow后安装pytorch,之后出现这个错误,猜测可能是pytorch和当前系统的cudnn版本不同,导致pytorch的cudnn覆盖了系统
解决方法部分
确定问题后,进入解决部分
1、前往官网下载cudnn
前往官网(https://developer.nvidia.com/rdp/cudnn-archive),选择与你当前cuda环境相符合的版本进行下载,注意cuda版本号和系统,cuda版本号不清除可以nvcc -V (较老版本是小写v)查看
2、解压压缩包,准备覆盖
将压缩包解压后,里面需要用到的只有bin下的dll文件
3、更换pytorch下的dll文件
前往{你的python安装目录}\Lib\site-packages\torch\lib,将上面的dll全部替换进去
完成后运行
print(torch.__version__) # torch version
print(torch.version.cuda) # cuda version
print(torch.backends.cudnn.version()) # cudnn version
查看版本号,版本号为8100就是正常了
日后可能出现的问题及解决办法部分
毕竟修改了pytorch的cudnn版本,以后pytorch调用cudnn可能会报错,但由于更新的版本号幅度并不大(8.0.5->8.1.0),个人建议等报错了,将传参做调整就可以了,如果实在严重,也可以考虑重新安装pytorch
为什么torch的cudnn会干扰系统的cudnn?
只是个人猜测,python在调用dll时,是先调用包内的dll->模块内的dll->系统环境变量下的dll,而torch的模块内dll优先级高于系统环境变量下的dll,同时它们又是同名,所以系统环境变量下的cudnn未被调用,而torch下的dll被调用了
闲话
最近学学习感觉越学越痛苦,因为加的群几乎全是有一定基础的人的群,导致他们在说什么我完全不知道,不知道有没有入门学tensorflow/pytorch/jax/opencv/C++/ros这些的小伙伴可以加q一起聊聊技术emm,不过目前本人学的还是偏基础偏的太离谱,所以很大概率是会多向你请教就是了