前言:
之前安装的 CPU 版本的 tensorflow 一直出问题,索性就直接安装 GPU 版本的 tensorflow 了(有了GPU 就不能浪费)。

安装过程:

1)看自己有无 GPU,找到对应 GPU 的版本:任务管理器 => 性能 => GPU

faiss GPU python安装教程 怎么安装gpu版本tensorflow_镜像源

然后在 Anaconda Prompt 里面输入 nvidia-smi 来检查是否含有英伟达驱动,若没有则需要在 英伟达官网 安装驱动:

faiss GPU python安装教程 怎么安装gpu版本tensorflow_tensorflow_02


下载好了驱动之后,在 cmd 中输入命令 nvidia-smi

faiss GPU python安装教程 怎么安装gpu版本tensorflow_CUDA_03


2)在虚拟环境中安装 GPU 加速软件包 cuDNN、CUDA:

首先根据官网 https://tensorflow.google.cn/install/source_windows?hl=en#gpu 来确定 tensorflow、cuDNN、CUDA 的对应关系:

faiss GPU python安装教程 怎么安装gpu版本tensorflow_镜像源_04

然后根据网站 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 来确定自己的 GPU 所支持的 CUDA 版本:

faiss GPU python安装教程 怎么安装gpu版本tensorflow_深度学习_05

这里我安装的是 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 版本对应关系,目前还没到最新的,等找到了再更新到此。