tensorflow之安装gpu版本

tensorflow官网中提示Anaconda安装tensorflow的GPU版本的时候需要安装CUDA和cuDNN,安装步骤如下:

  1. 查看自己显卡算力,推荐算力大于3.5以上安装gpu版本

  2. 注意CUDA版本与显卡的对应关系,tensorflow-gpu和cuDNN之间版本的对应。版本对应关系具体请参考Tensorflow官网。一些数据如下所示:

    版本 Python 版本 编译器 构建工具 cuDNN CUDA
    tensorflow_gpu-2.6.0 3.6-3.9 MSVC 2019 Bazel 3.7.2 8.1 11.2
    tensorflow_gpu-2.5.0 3.6-3.9 MSVC 2019 Bazel 3.7.2 8.1 11.2
    tensorflow_gpu-2.4.0 3.6-3.8 MSVC 2019 Bazel 3.1.0 8.0 11.0
    tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019 Bazel 3.1.0 7.6 10.1
    tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019 Bazel 2.0.0 7.6 10.1
    tensorflow_gpu-2.1.0 3.5-3.7 MSVC 2019 Bazel 0.27.1-0.29.1 7.6 10.1
    tensorflow_gpu-2.0.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
    tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
    tensorflow_gpu-1.14.0 3.5-3.7 MSVC 2017 Bazel 0.24.1-0.25.2 7.4 10
    tensorflow_gpu-1.13.0 3.5-3.7 MSVC 2015 update 3 Bazel 0.19.0-0.21.0 7.4 10
    tensorflow_gpu-1.12.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0 7.2 9.0
  3. 创建虚拟环境:

    conda create -n tensorflow_gpu python=3.8
    
  4. 在我们的具体使用中,其实真正需要的并不是整个CUDA,而是cudatoolkit,所以我们在这里直接安装cudatoolkit,不需要再下载3个多G的CUDA来本地安装。

    > conda activate tensorflow_gpu
    > conda install cudatoolkit=11.0
    
  5. 安装cuDNN,注意查看cuDNN与CUDA对应的版本关系。

    > conda install cudnn=8
    

    这里有个问题,通过之前安装的CUDA是11.0,然后查的cuDNN版本应该是8.0。本来应该安装8.0的,问题是安装8.0时候提示错误。找不到这个对应的软件包。解决方案就是不加点后面的小版本号,直接安装当前大版本(8)的最新版本。
    (这里有两个推测,一种是由于我更改了国内源,可能国内源没有这个安装包,又可能是真的没有这个版本的软件包。)
    conda search cudnn查看一下有哪些版本。发现只有8.2.1版本的,所以使用8.0发现根本找不到。

  6. 安装tensorflow-gpu。这里通过conda安装找不到,网上说通过pip安装。之前对应的cudnn与CUDA版本对应的gpu版本为2.4.0

    pip install tensorflow-gpu==2.4.0
    
  7. 查看自己的tensorflow的gpu版本是否安装成功:

    # 在新的tensorflow版本中,这里会有警告,说这个函数将要被淘汰
    > import tensorflow as tf	# 导入tensorflow包,并命名为tf
    > tf.test.is_built_with_cuda() # 判断是否可以调用CUDA
    > tf.test.is_gpu_available() # 判断是否可以调用GPU
    
    # 上面代码实现可能会出现很多提示,提示说函数将淘汰啥的,可以直接输出看看效果。
    > print(tf.test.is_gpu_available())
    
    # 对于新版本中,提示使用tf.config.list_physical_devices()和tf.config.list_logical_devices()来查看是否有GPU
    > tf.config.list_physical_devices()
    Out[]:
     [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
      PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
    

与keras的关系

谷歌在2019年6月发布TensorFlow2.0时,宣布Keras是TensorFlow的官方高级API,用于快速简单的模型设计和训练。并随着Keras2.3.0的发布,其声明该版本是Keras首个与tf.keras同步的版本。
也就是说在Tensorflow2.0版本中,其Kerastf.keras是同步的。那么对于TensorFlow2.0版本中,更推荐使用tf.keras

首先了解一下Keras与TensorFlow的历史。Keras最初是由GoogleAI开发人员/研究人员FrancoisChollet创建并开发的。开发Keras是为了方便他自己的研究和实验。但是,随着深度学习的普及,许多开发人员、程序员和机器学习从业人员都因其易于使用的API而涌向Keras。当时没有太多的深度网络可用,Keras为了训练自己的自定义神经网络,需要一个用于构建网络的图和拓扑结构,运行优化器,并执行具体的数字运算的计算引擎(称为后端)。对于Keras而言,在v1.1.0之前,Keras的默认后端都是Theano。与此同时,Google发布了TensorFlow,用于机器学习和神经网络训练的符号数学库。这时候,Keras开始支持TensorFlow作为后端。渐渐地,TensorFlow成为最受欢迎的后端,这也就使得TensorFlow从Kerasv1.1.0发行版开始成为Keras的默认后端。一般来说,一旦TensorFlow成为了Keras的默认后端,TensorFlow和Keras的使用量会一起增长,也就是如果没有TensorFlow的情况下就无法使用Keras,所以如果在系统上安装了Keras,那么也就必须安装TensorFlow。同样的,TensorFlow用户也越来越被高级KerasAPI的简单易用所吸引。tf.keras是在TensorFlowv1.10.0中引入的,这是将keras直接集成到TensorFlow包中的第一步。这时候,f.keras软件包与你通过pip安装的keras软件包(即pipinstallkeras)是分开的。为了确保兼容性,原始的keras包没有被包含在tensorflow中,因此它们的开发都很有序。因此这段时间内开发的keras版本与TensorFlow版本需要有个对应关系,否则可能会报错。然而在2019年6月谷歌发布的TensorFlow2.0,宣称Keras是TensorFlow的官方高级API。并随着Keras2.3.0的发布,宣称该版本是Keras首个与tf.keras同步的版本。并且对于该版本,Francois 声明:

  1. 这是 Keras 首个与 tf.keras 同步的版本;
    这也是 Keras 支持多个后端(即 Theano,CNTK 等)的最终版本。
    最重要的是,所有深度学习从业人员都应将其代码转换成 TensorFlow 2.0 和 tf.keras 软件包。
    原始的 keras 软件包仍会接收 bug 并修复,但请向前看,你应该开始使用 tf.keras 了。

因此如果是tensorflow2.0入手的Kears模块的话,直接学习就行,但是对于tensorflow1.0就已经学习了深度学习的来说,可以参考自动将代码升级到 TensorFlow 2。当然也有一些不同的地方,可以去官网查找资料。

使用Keras遇到的坑

在我使用Keras过程中,使用的是Tensorflow2.6.0版本的,在使用from tensorflow.keras.applications.resnet50 import ResNet50的时候,报错cannot import name 'dtensor' from 'tensorflow.compat.v2.experimental。该问题是由于tensorflow与Keras版本不兼容所导致的。那么解决方案也就立竿见影了,将版本对应即可。

# 首先查看一下tensorflow的版本
import tensorflow as tf
print(tf.__version__)

# 查看一下keras版本
import tensorflow.keras as keras
print(keras.__version__)

在版本2.3.0后,Keras与Tensorflow版本是一一对应的,因此,将安装keras版本为tensorflow版本的即可。(当然也可以将tensorflow版本改为Keras版本的,不过要替换的安装包相对替换keras而言大很多)。

安装keras版本为tensorflow的:这里以keras的版本2.6为例

pip install keras==2.6

还有一个问题,在使用keras过程中可能需要下载一些数据集和权重信息等,默认位置是C:\Users\用户名\.keras目录下。所以当运行比较多的keras模型导致c盘不够的情况下,可以定时清理该目录。

猜你喜欢

转载自blog.csdn.net/weixin_41012765/article/details/124973351