经过一整天的折腾,参考了许多网友的建议后,终于把tensorflow-gpu库安装成功了,现将安装经验总结如下:
本经验适用于win10操作系统下的版本5.2.0的Anaconda3,理由是该版本对应Python3.6,而比此版本高的Anaconda3配套的是Python3.7,目前TensorFlow对Python3.7支持不够友好,导致安装出错。TensorFlow对Python版本的要求将在下面介绍,理论上安装搭载相应Python版本的Anaconda3都应该可以成功安装TensorFlow库。
TensorFlow库的官方说明中对系统的要求如下:
本文主要介绍tensorflow-gpu库的安装,所以只介绍关于GPU硬件及软件的要求。有关tensorflow库(CPU版)的安装对此一般不做要求,所以相对要简单许多。
tensorflow-gpu要求电脑搭载CUDA算力在3.5及以上的NVIDIA GPU显卡,具体可登陆CUDA-enabled GPU cards检查你的GPU是否达到要求。
以下是tensorflow-gpu对NVIDIA GPU显卡的软件要求:
tensorflow-gpu库对CUDA及cuDNN的要求如下图,建议下载CUDA9.0以及cuDNN v7.4.2。
由于官方上只提供最新版本的Anaconda3下载,考虑到与tensorflow-gpu库的兼容问题,不建议安装最新版的Anaconda3软件。可去清华大学开源软件镜像站下载旧版Anaconda3,这里以64位windows系统下的Anaconda3-5.2.0版本为例。
建议安装目录中不要出现空格符号,一般按默认目录安装即可。
安装完成后,进入Anaconda Prompt控制台,输入以下指令先把pip版本升级到最新版(18.1.0)
python -m pip install --upgrade pip
1、打开微软网站,下载并安装以下两个库。
2、再进入VS网站,下载并安装VS2017社区版。
进入CUDA Toolkit Archive网站下载CUDA Toolkit 9.0,以及补丁patch2、3、4(patch1安装不上,可以不安装)。
登陆官方cuDNN网址下载cuDNN。首先需要注册一个账号(注册过程网页打开极慢,建议科学上网),然后下载cuDNN v7.4.2版本。
安装方法:
1、解压cudnn-9.0-windows10-x64-v7.zip
2、将以下文件复制到
(1)Copy
(2)Copy
(3)Copy
3、打开“运行”-“control sysdm.cpl”-高级-环境变量,确保以下配置路径正确。
Variable Name: CUDA_PATH
Variable Value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
至此,安装tensorflow-gpu库的所有要去条件都已具备,下面可以安装tensorflow-gpu库。Anaconda3自带的Spyder IDE界面与Matlab相似,借助该IDE可以很方便地进行深度学习程序编写。下面以Spyder为例,介绍如何安装tensorflow-gpu库。
打开Spyder后,在控制台输入!pip install tensorflow-gpu指令,等待片刻后,软件将自动将tensorflow-gpu库安装上。
下面给出了tensorflow库的CPU运行和GPU运行时间比较代码,其中为了提高对比差异,刻意将第二层的单元数设置为10000。运行结果显示,基于GPU的tensorflow库运行效率果然很高,计算效率几乎是CPU运行效率的10倍!
"""神经网络框架搭建与测试"""
import tensorflow as tf
from tensorflow import keras
import numpy as np
import time
# 获取数据
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
train_images = train_images / 255.0
test_images = test_images / 255.0
# 构建模型
#with tf.device("/CPU:0"):
with tf.device("/device:GPU:0"):
time_start = time.time()
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(10000, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(train_images, train_labels, batch_size=32, epochs=5)
time_end = time.time()
#print("The used time for CPU is %.2fs" %(time_end-time_start))
print("The used time for GPU is %.2fs" %(time_end-time_start))
# 评估准确率
#test_loss, test_acc = model.evaluate(test_images, test_labels)
#print("Test accuracy: ", test_acc)
# 预测
#predictions = model.predict(test_images)
#prediction_labels = np.argmax(predictions, axis=1)