前言:
之前安装的 CPU 版本的 tensorflow 一直出问题,索性就直接安装 GPU 版本的 tensorflow 了(有了GPU 就不能浪费)。
安装过程:
1)看自己有无 GPU,找到对应 GPU 的版本:任务管理器 => 性能 => GPU
然后在 Anaconda Prompt
里面输入 nvidia-smi
来检查是否含有英伟达驱动,若没有则需要在 英伟达官网 安装驱动:
下载好了驱动之后,在 cmd 中输入命令 nvidia-smi
:
2)在虚拟环境中安装 GPU 加速软件包 cuDNN、CUDA:
首先根据官网 https://tensorflow.google.cn/install/source_windows?hl=en#gpu 来确定 tensorflow、cuDNN、CUDA 的对应关系:
然后根据网站 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 来确定自己的 GPU 所支持的 CUDA 版本:
这里我安装的是 tensorflow-gpu==2.1、cuDNN=7.6、CUDA=10.1
# 创建名为 tensorflow 的虚拟环境,其 python 版本为 3.7
conda create -n tensorflow python=3.7
# 进入 tensorflow 的虚拟环境
conda activate tensorflow
# 安装英伟达的SDK10.1版本
conda install cudatoolkit=10.1
# 安装英伟达深度学习软件包7.6版本
conda install cudnn=7.6
# 安装 tensorflow-gpu 指定 2.1 版本
pip install tensorflow-gpu==2.1
2.0以后tensorflow和tensorflow-gpu有啥区别:conda 装东西总是喜欢检查环境中所有包的依赖关系,当你装了 tensorflow 再用 conda 装matplotlib,就把 tensorflow 的 numpy 包给替换了,造成使用 tensorflow 后报 numpy 错误。因为安装软件包的话,能用 pip install xxx 装尽量用 pip,少用 conda install xxx。
其他额外补充:
1、tensorflow 设置 GPU 训练模型
import tensorflow as tf
gpus = tf.config.list_physical_devices("GPU")
if gpus:
tf.config.experimental.set_memory_growth(gpus[0],True)
// 测试 GPU 是否可用
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
version=tf.__version__ #输出tensorflow版本
gpu_ok=tf.test.is_gpu_available() #输出gpu可否使用(True/False)
print("tf version:",version,"\nuse GPU:",gpu_ok)
tf.test.is_built_with_cuda() # 判断CUDA是否可用(True/False)
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
2、报错UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel Esri https://api.anaconda.org/Esri
一般出现这种错误都是镜像源问题,需要更改镜像源。虽然我在最开始的时候就使用了清华的镜像源,可能在后面出现了错误,所以我们再更新一遍清华的镜像源即可。
参考:conda安装指定版本TensorFlow 中更换镜像源的方法。
此报错主要是由于安装高版本的cudatoolkit、cudnn导致的,再更换为清华的镜像源之后此错误会消失。
3、tensorflow-gpu 版本也要与 keras 版本相对应,不然也会产生报错
如我使用的是 tensorflow_gpu==2.6.0,那么我使用的 keras 版本也应该是 2.6.0,使用命令pip install keras=2.6.0
,这样搭配起来不会报错。关于 tensorflow 与 keras 版本对应关系,目前还没到最新的,等找到了再更新到此。