写在最前

能有如此方便的,避免走弯路的,深度学习环境配置教程,首先要感谢实验室颜神@stary_yan 与进神的配置指南。然后在他们的基础上再将其细化修改,变得更加清晰。哪怕你和我一样都是命令行小白,只要有一台带GPU的电脑,也能配置出自己的GPU版的Tensorflow+Keras环境,来跑深度学习代码。


准备材料

  1. 敏捷的手指
  2. 对深度学习的热情
  3. 一台Win10的带GPU的电脑(要联网)
所需要的文件的百度网盘下载地址:

链接:https://pan.baidu.com/s/12poRM7hqu_5BEAvA-UakDg 密码:0l1q

里面包含的文件有:

  • Anaconda3-4.2.0-Windows-x86_64.exe(亲测Anaconda3-5.2.0-Windows-x86_64.exe,其对应的Python版本是3.6,也适用下面的教程)
  • tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl
  • cuda(内含: bin, include, lib 这3个文件夹)
  • NVIDIA GPU Computing Toolkit(内含:CUDA.zip

手把手教学

1、查查自己电脑是否符合要求

确保你的设备是配置独显的,具体的查看方式是下载GPU-z,可以知道自己设备的GPU版本。本教程所使用的电脑是:联想刃7000——配备独立显卡(GTX 1060)

注:本方法不一定适⽤用所有的主机。可能根据显卡版本不不同,需要的配置⽂文件也会有所差异,但绝大多数应该都适用。


2、更新显卡驱动

先下载驱动精灵(http://www.drivergenius.com/),将自己电脑的显卡等驱动更新到最新。


3、安装Anoconda(Python3也会顺带装好)

安装Anoconda3-4.2.0Anaconda3-5.2.0版本同样适用,其实更推荐5.2.0,后面我们会玩玩Auto-Keras,其只适用于Python3.6)的版本,这个版本较稳定,并且用这个版本安装能够work(其他版本未经测试不太确定)。具体安装方法:双击Anaconda3-4.2.0-Windows-x86_64.exe,按照默认的设置从头到尾点击**“下一步”**,一直到最后安装完成。

用命令行窗口检测是否安装成功,并将conda成功添加到环境变量中。

打开命令行窗口,使用快捷键Win + R,会弹出下面的界面


![]()

在其中输入cmd即可弹出命令行窗口。



keras模型GPU训练 keras gpu训练_Tensorflow


在里面输入conda,然后按回车,会弹出一堆下图所示的说明文字,则表示安装成功。



keras模型GPU训练 keras gpu训练_keras模型GPU训练_02



4、配置其它文件

1)把从网盘中下载的 cuda 文件夹放到D盘根目录(D:\)

2)解压NVIDIA GPU Computing Toolkit中的 CUDA.zip文件,接着将解压后的CUDA文件夹拷贝到 C:\Program Files。注意只保留一层CUDA文件夹,也就是你此时的文件目录应该是这样的: C:\Program Files\CUDA\v8.0\...

然后是很关键的一步:添加环境变量,其操作如下:

  • 点击对桌面的**“此电脑”点击右键,再点击“属性”**,然后会弹出如下框框:


keras模型GPU训练 keras gpu训练_深度学习_03


  • 点击左侧的**“高级系统设置”**,弹出下图所示的系统属性框。


keras模型GPU训练 keras gpu训练_深度学习_04


  • 再点击**“环境变量”**,弹出环境变量框。


keras模型GPU训练 keras gpu训练_GPU_05


  • 双击**“用户变量”下面的“Path”,然后新建**两个路径: C:\Program Files\CUDA\v8.0\binD:\cuda\bin


keras模型GPU训练 keras gpu训练_keras模型GPU训练_06



5、安装 GPU 版 tensorflow

首先使用如下命令更新 pip 到最新版,在命令行(前面说明过的打开方式)中运行:
python -m pip install --upgrade pip

之后,我们安装 tensorflow GPU 版,我们先将路径cd到tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl文件所在路径,假设我们的这个whl文件储存在D盘根目录的DL文件夹中,则先使用如下命令:
cd D:\DL

然后再使用如下命令进行安装:
pip install tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl

注:
如未从博客开头的百度网盘下载下来的,可以使用下述代码进行安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.4.0 注:tensorflow-gpu 1.4.0版本确定能运行,其它版本不能保证运行。


6、安装 Keras

最后我们再进行 Keras 的安装就大功告成了!Keras会自动调用GPU 版 tensorflow 来运行,我们接着在命令行中使用如下命令来进行安装:
pip install Keras==2.1.5

注:Keras 2.1.5版本是目前最新的版本,确保能够运行。

至此,我们就大功告成了,最后来进行测试!


测试是否配置好GPU版本的TensorFlow

参考:

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

查看日志信息若包含GPU信息,就是使用了GPU。

但是注意,如果GPU和CPU两者的信息同时显示,说明两个版本的tensorflow都安装了,可能会运行时只运行CPU版本的。此时需要卸载两个版本,再安装tensorflow-gpu即可。

其他方法:跑计算量大的代码,通过 nvidia-smi 命令查看gpu的内存使用量。


感受飞一般的速度

可以使用Spyder或者Jupyer Notebook来测试,输入如下代码观察是否能够成功运行,成功运行则安装成功!

import numpy as np
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.optimizers import SGD

# Generate dummy data
x_train = np.random.random((100, 100, 100, 3))
y_train = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)
x_test = np.random.random((20, 100, 100, 3))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(20, 1)), num_classes=10)

model = Sequential()
# input: 100x100 images with 3 channels -> (100, 100, 3) tensors.
# this applies 32 convolution filters of size 3x3 each.
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(100, 100, 3)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)

model.fit(x_train, y_train, batch_size=32, epochs=10)
score = model.evaluate(x_test, y_test, batch_size=32)