环境配置——win10下tensorflow-GPU版本升级至tensorflow-GPU 1.14.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011106767/article/details/94964344

一、系统环境

win10 x64
现有深度学习环境:
anaconda3
python3.5
tensorflow-gpu1.8.0
cuda9.0+cudnn7.1

二、问题驱动

tensoflow中导入MNIST数据手写集最常用的两句语句

from tensorflow.examples.tutorial.mnist import input_data
data_mnist = input_data.read_data_sets("MNIST_data/", one_hot = True)

目前再使用会提示你Please use alternatives such as official/mnist/dataset.py的警告,让你替换马上要弃用的这些函数,当时为了解决这个问题,只是暂时从tensorflow.keras.datasets.*找寻我需要的数据集;
经过去往tensorflow的github一番查找后发现,这是1.7.1版本的一个bug,据说是修复了,但是警告还是不定时的打印出来,总使用tensorflow下的数据集也不是长久之计,找一下tensorflow有没有替代的一些封装包,查找到tensorflow-datasets,其只支持1.12.0版本以后的,思考了一番,如果是tensorflow官方支持的专门针对数据集的库,吸引力还是很大的,这就是对笔者台式机1.8.0版本升级至1.14.0版本的初衷;

那么现在要做的就是,查一下目前的tensorflow版本,截止到2019.7.6,tensorflow-gpu版本最高版是测试版2.0,但是beta嘛,一定不太稳定而且1.0和2.0版本语法和一些函数一定不小的变化,退一步,安装tensorflow-gpu1.14.0
github上面查看了一下对于cuda和cudnn版本的要求(其实用Docker最方便了,一个DOCKFILE的事情,但是现在赶进度,没办法,苦逼的先用着老一套吧,有时间了再整个技术路线换新),在发布版本1.13.1中提到了如下:

-TensorFlow GPU binaries are now built against CUDA 10 and TensorRT 5.0.

这里只说了CUDA10,去NIVIA官网去下载CUDA,发现最新的是10.1,好嘛,小心心作祟,下载了最新的10.1版本的,但是一番安装后,程序报错说找不到cudart64_100.dll,明眼人一看就知道,版本不支持····心塞塞,一个CUDA驱动包可是2+GB呢
好了,现在版本号终于确定了
Tensorflow-GPU 14.0
CUDA10.0
CUDNN 7.6 for cuda-10.0

三、升级步骤

1. 卸载或直接更新Tensorflow-GPU

这里提示一下,其实tensorflow-GPU的安装和CUDA\CUDNN的安装顺序并没有前后之分

想要先卸载的,可以卸载,然后再安装
卸载
Anaconda Prompt环境下(为了不必要的麻烦,启动管理员模式哈)

pip uninstall tensorflow-gpu # 有一个提示问你(Y/N)? 直接Y就行

离线安装
不想在线安装的,去pypi网站下载whl离线安装包或者压缩包,注意自己python语言版本的对应,下载后直接pip安装即可

pip install <your dir>/package.whl --ignore-isntalled

在线安装
在线安装的好处是自动帮你筛选适合你系统、python版本的安装包,缺点就是对网速要求高,我推荐离线安装

pip install <package name> --upgrade

2. 安装CUDA

2.1 显卡驱动更新

这里需要注意一下的是,我现在做的是更新tensorflow-GPU即其所依赖的一些包和库,使用新版本的驱动要求可以参考tensorflow-gpu安装指南这里为了方便大家,我直接复制过来一份软件要求:
(如果你的显卡版本满足要求,直接跳到2.2, 怎么查看显卡驱动版本号,请自行百度,笔者是直接更新的)


软件要求:
必须在系统中安装以下 NVIDIA® 软件:
-	[NVIDIA® GPU 驱动程序](https://www.nvidia.com/drivers) - CUDA 10.0 需要 410.x 或更高版本。
-	[CUDA® 工具包](https://developer.nvidia.com/cuda-zone) - TensorFlow 支持 CUDA 10.0(TensorFlow 1.13.0 及更高版本)
-	CUDA 工具包附带的 [CUPTI](http://docs.nvidia.com/cuda/cupti/)。
-	[cuDNN SDK](https://developer.nvidia.com/cudnn)(7.4.1 及更高版本)
-	(可选)[TensorRT 5.0](https://docs.nvidia.com/deeplearning/sdk/tensorrt-install-guide/index.html),可缩短在某些模型上进行推断的延迟并提高吞吐量。

如我们所见,第一个是GPU的驱动程序,需要高版本的CUDA时,需要高版本的显卡驱动,笔者的台式机之前安装过驱动,我选择的是直接更新一下驱动;
“电脑—右击,选中‘管理’ — 设备管理— 显示适配器 — 右击,选择‘更新驱动’ ”
在这里插入图片描述
在这里插入图片描述
这就完成了第一步驱动更新;

2.2 CUDA安装

这里需要在英伟达官网下载驱动,这里配置tensorflow-GPU版本需要下载10.0的,一定要注意!!
在这里插入图片描述
下载好的文件是这个样子的
在这里插入图片描述

注意 - CUDA安装显卡驱动

直接点击安装,
其安装过程是:

  1. 解压
  2. 检查系统兼容性
  3. 协议告知
  4. 选项
  5. 安装
  6. 完成

第一步会提示你解压,点击确定就行,这里唯有一点需要特殊注意的就是:
CUDA安装过程中会有一个驱动程序的安装,如果你已经像2.1那样更新过驱动了,则这里不选择安装驱动,你需要在 **步骤2****协议告知(License Agreement)**中,选择自定义(custome):
在这里插入图片描述

,将‘Drivers-----Displayer Dirver’前面的复选框勾勾去掉
在这里插入图片描述

  1. 配置CUDNN
    需要去官网下载文件,选择和自己的系统、CUDA版本相配的安装包
    在这里插入图片描述
    文件下载好后,是压缩包
    在这里插入图片描述
    将解压缩后的文件夹中的bin, include, lib拷贝至cuda的安装目录下(一般为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0),这里如果弹出什么 ‘需要管理员权限才可以进行此操作’ 的提示直接点击 ‘继续’ 就可以了

注意 - 多版本CUDA

注意
我是安装了三个版本的CUDA,并没有卸载老版本的,因为处于测试阶段,但是多个CUDA这里需要设置一下环境变量,为了告诉程序你想要使用的CUDA版本号以及文件路径信息:
“ 电脑 — 右击,‘属性’ — 右上角,‘高级系统设置’ — 右下角,‘环境变量’ ”:
在这里插入图片描述
这里需要注意的是,CUDA_PATHPath两个变量

  1. CUDA_PATH
    确保这个变量的值是你想要的CUDA的版本号(否则,重新编辑其指向的路径)
  2. Path
    选择Path, ‘编辑’,在弹出的Path的值列表中,确保带有CUDA字样的有且只有这两条
    在这里插入图片描述
    虽然一定版本的tensorflow-gpu只会找一定版本的动态链接库,但是这里为了以防万一,还是只保留一个版本的CUDA链接库地址

3.测试

使用import测试一下

import tensorflow as tf

a = tf.constant([1,2])
sess = tf.InteractiveSession()
a.eval() # out:array([1,2])
sess.close()

完美通过~~!!!

4.bug调试

1 .TypeError: TF_SessionRun_wrapper: expected all values in input dict to be ndarray

这里我运行自己的程序的时候,遇到了一个bug:在一个以MNIST为数据集的3层网络中,出现了“TypeError: TF_SessionRun_wrapper: expected all values in input dict to be ndarray.”
这里比较困惑我,因为我测试了自己的输入数据,类型确实是numpy.ndarray,这里从GitHub上面找了一些方法,简单来说就是将numpy卸载了重装:
管理员身份打开Anaconda Prompt,

#  先查看了一下目前的版本号
pip list # numpy 1.16.4 是最新的
pip uninstall numpy 

pip list # 笔者的台式机卸载后,显示numpy依旧存在,但是版本为1.15.2

#  这时候,直接升级一下吧
pip install numpy --upgrade

pip list # 这时候,版本号变回了1.16.4

但是重新运行自己的python程序时,却没有bug了

2.AttributeError: module ‘matplotlib.colors’ has no attribute ‘to_rgba’

这是另一个bug,大概意思是matplotlib中的函数里面没有这个属性,第一感觉应该是升级别的库后,matplotlib的版本太久了,需要更新:
老办法,管理员身份,Anaconda Prompt:

pip list --outdated # 显示目前matplotlib版本号为1.5.3, 最新版本为3.0.3

# 更新一下
pip install matplotlib --upgrade

这时候,程序就没有再报错了

参考:

  1. tensorflow官网安装指南
  2. tensroflow github
  3. tf.contrib.learn.datasets DEPRECATED INSTRUCTION
展开阅读全文

没有更多推荐了,返回首页