Linux的TensorFlow2.x安装与常见问题
首先注意!!:TensorFlow2.11开始就不支持Windows的GPU,若要在Windows下安装GPU版本的,只能安装2.10及以下的版本,可在官网中文版页面找到安装步骤。
下面是官网提示直接安装,直接安装的话是最新版本的:
若要安装指定版本,使用命令:pip install tensorflow==2.xx
注意事项:
-
注意安装版本要和python版本以及cuDNN、CUDA版本要对应,可去官网查:
https://tensorflow.google.cn/install/source
-
使用TensorFlow还需要安装cuDNN以及CUDA,命令:
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0
注:这个是使用conda安装的命令,conda会自动把路径加入环境变量进行配置,不需要手动配置如果只做深度学习完全足够,不需要在系统里本地安装CUDA和cuDNN。在进行代码运行时,若没有手动设置$CUDA_HOME路径,会优先使用conda安装的CUDA和cuDNN。- 若在linux服务器上安装cuda,如果不是root用户,或许无法安装新版本的cuda和cuDNN,只能安装在用户的文件夹下,但是会出现
Log file not open. Segmentation fault (core dumped)
的错误,这时只能联系管理员删除/tmp/cuda_installer.log
文件
- 若在linux服务器上安装cuda,如果不是root用户,或许无法安装新版本的cuda和cuDNN,只能安装在用户的文件夹下,但是会出现
-
此外,还可能遇到
ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory
类似的错误,这说明缺少tensorTR或者tensorTR版本不对,此时需要:- 检测该环境下python的site-package/tensorrt_libs下是否有
libnvinfer.so.x
文件 - 若没有,则需安装tensorTR,可使用
pip install tensorrt==8.6.1(或者别的版本)
命令安装。 - 若安装的是别的版本的tensorrt,可切换到tensorrt_libs目录下执行命令新建软链接,并在环境变量中新增安装位置:
ln -s libnvinfer.so.8 libnvinfer.so.7
ln -s libnvinfer_plugin.so.8 libnvinfer_plugin.so.7
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:xxx/xxx/.../site-packages/tensorrt_libs
source ~/.bashrc
可参照:https://blog.csdn.net/u010522887/article/details/136837425
- 检测该环境下python的site-package/tensorrt_libs下是否有
-
当遇到如下错误时,可能是路径没有进行软连接
首先查找libcudnn_ops_infer.so.8的位置,并与/usr/local/cuda-11.3中的进行链接,代码如下:
sudo ln -sf /mnt/disk1/wangzhichuang/anaconda3/pkgs/cudnn-8.1.0.77-h90431f1_0/lib/libcudnn_cnn_train.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /mnt/disk1/wangzhichuang/anaconda3/pkgs/cudnn-8.1.0.77-h90431f1_0/lib/libcudnn_adv_infer.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /mnt/disk1/wangzhichuang/anaconda3/pkgs/cudnn-8.1.0.77-h90431f1_0/lib/libcudnn_ops_train.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /mnt/disk1/wangzhichuang/anaconda3/pkgs/cudnn-8.1.0.77-h90431f1_0/lib/libcudnn_cnn_infer.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /mnt/disk1/wangzhichuang/anaconda3/pkgs/cudnn-8.1.0.77-h90431f1_0/lib/libcudnn_adv_train.so.8 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8