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
这里提示一下,其实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
这里需要注意一下的是,我现在做的是更新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时,需要高版本的显卡驱动,笔者的台式机之前安装过驱动,我选择的是直接更新一下驱动;
“电脑—右击,选中‘管理’ — 设备管理— 显示适配器 — 右击,选择‘更新驱动’ ”
这就完成了第一步驱动更新;
这里需要在英伟达官网下载驱动,这里配置tensorflow-GPU版本需要下载10.0的,一定要注意!!
下载好的文件是这个样子的
直接点击安装,
其安装过程是:
第一步会提示你解压,点击确定就行,这里唯有一点需要特殊注意的就是:
CUDA安装过程中会有一个驱动程序的安装,如果你已经像2.1那样更新过驱动了,则这里不选择安装驱动,你需要在 **步骤2****协议告知(License Agreement)**中,选择自定义(custome):
,将‘Drivers-----Displayer Dirver’前面的复选框勾勾去掉
注意
我是安装了三个版本的CUDA,并没有卸载老版本的,因为处于测试阶段,但是多个CUDA这里需要设置一下环境变量,为了告诉程序你想要使用的CUDA版本号以及文件路径信息:
“ 电脑 — 右击,‘属性’ — 右上角,‘高级系统设置’ — 右下角,‘环境变量’ ”:
这里需要注意的是,CUDA_PATH和Path两个变量
使用import测试一下
import tensorflow as tf
a = tf.constant([1,2])
sess = tf.InteractiveSession()
a.eval() # out:array([1,2])
sess.close()
完美通过~~!!!
这里我运行自己的程序的时候,遇到了一个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了
这是另一个bug,大概意思是matplotlib中的函数里面没有这个属性,第一感觉应该是升级别的库后,matplotlib的版本太久了,需要更新:
老办法,管理员身份,Anaconda Prompt:
pip list --outdated # 显示目前matplotlib版本号为1.5.3, 最新版本为3.0.3
# 更新一下
pip install matplotlib --upgrade
这时候,程序就没有再报错了
参考: