conda环境下安装tensorflow-gpu 2.4 + opencv 3.3

conda环境下安装tensorflow-gpu 2.4 + opencv 3.3

背景需求

原先的环境下,由于numpy1.20版本和部分代码存在冲突,需要降级使用numpy库。而因为原环境numpy库是随着tensorflow2.5依赖安装的,降级显然不现实,因此想使用conda创建一个新环境。
由于需求cuda11以上的版本,查阅资料后可选择的只有tensorflow2.4。然而,conda提供的版本并不包含2.4版本。
conda search tensorflow-gpu 返回的结果此外,为了找到python版本和numpy与tensorflow不冲突的opencv库,尝试了多次的安装解析,最终找到不冲突的环境为python3.6,安装numpy依赖同样为1.19的opencv3.3版本。

P.S. conda的tensorflow和opencv版本数量少感觉挺坑的,较少的版本数限制了依赖库版本的选择范围。而opencv版本对python版本有较强限制,且在同一python版本中底层库还可能和tensorflow有冲突,尤其是出现cuda和cudnn的冲突,想要找一个多方都不冲突的需要多查资料,多试几次环境配置。

安装过程

由于上述分析,满足需求的最佳选择是:python3.6 + tensorflow2.4+numpy1.19+opencv3.3 。而conda并没有提供tensorflow相关包安装与依赖解析,因此需要按照一般的cuda+cudnn+tensorflow的方式配置。
需要注意的是,既然选择了虚拟环境,就尽量使用包管理器提供的工具,避免直接在系统里折腾Nvidia那套,保持计算机操作系统原环境的纯净会比较好。

具体操作

首先创建一个新的conda环境:
conda create -n py36 python=3.6
激活新环境:
conda activate py36
先使用conda提供的方法安装opencv:
conda install opencv=3.3.1
(具体版本号的选择可用conda search进行查询)

接下来先安装cuda,在conda环境下,提供了cudatoolkit的二进制分发包,故优先考虑使用conda安装:
conda install cudatoolkit=11.0
需要注意的是,conda默认源是找不到 cudnn8.0 版本的,但是在conda-forge这一channel中是存在的,因此使用-c来指定:
conda install -c conda-forge cudnn=8.0
在搭建好cuda和cudnn的环境后,转为使用pip进行安装。使用pip相比其它有conda支持的版本可能安装不够完善,但是还是有基本的依赖解析能力的,毕竟conda没有这版本也没办法:
pip install tensorflow-gpu=2.4.0
需要注意的是,上述版本号一定要找好对应关系,错误的cuda/cudnn和tensorflow共存时往往出现找不到GPU设备等问题、

之后使用conda安装所需的其他包即可,尽量避免冲突,目前看来conda的安装机制和依赖解析机制没有想象的那么优秀,有些问题还是需要自己去查阅和尝试解决。最重要的还是要发现问题出在哪里。

猜你喜欢

转载自blog.csdn.net/weixin_43331420/article/details/119767049