深度学习环境搭建
在前面几年的时候python下深度学习的主流环境还是google主导的tensortflow+keras
高低搭配环境,而在前年起,由facebook主导的torch从lua单平台port出了pytorch
,同时又和微软合作,组成了caffe2+pytorch
的高低搭配环境,成为了一种新的选择.在今年pytorch发布了1.0版本,而且抛开caffe提供了单独的c++版本,现在更加不可忽视.而tf一边则推出了利用webgl的tfjs,这让前端现在也可以使用tf训练的模型了,大大提高了其在工业上的应用场景.
但无论是哪种技术,最大的赢家都是英伟达,现在的主流深度学习框架都是基于cuda的,而对opencl的支持,各家都说在做,但即便支持最好的theano也没有做到完全可用的程度.
本文的是去年同名文章的删改版.本文旨在提供一个配置流程的参考,并不涉及具体算法和应用.配置的平台是window10.
windows对于深度学习环境并不友好,但毕竟不是人人都有条件买台电脑装linux,除了做深度学习什么别的都不干, 所以并不建议大多数人为了这个环境而换操作系统.本人之前也是为了深度学习环境装了双系统,但最终还是把linux卸了, 现在的主要开发环境还是windows系统.windows下的配置方式其实差不太多,各种框架也都总有办法支持windows. windows下执行效率也还好,至少对于我这样用来做做小项目的来说够用了.
硬件
- CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
- GUP: NVIDIA Corporation GP104 [GeForce GTX 1080]
- memory: 16 GB 2400 MHz x2
软件
- vs2015(全部更新包)
- cuda10.0
- cudnn 7.5 for cuda 10.0
- ananconda
- tensorflow 1.13.1
- pytorch
接下来是具体配置方法
Cuda配置
-
安装vs
去微软官方下载vs2015社区版下载并安装,注意这需要有微软帐号,没有就注册一个,只需要安装其中C/C++相关的工具和包即可.vs非常大,你需要一个好网速和一个大硬盘.
-
下载CUDA并安装
和linux上类似我们需要安装一下cuda环境,包括显卡驱动和cuda工具包,具体的可以看英伟达官方的说明,同样cuda也需要注册一个英伟达的帐号,注册一个就是了. 注意不要安装最新的版本,因为各种框架不会第一时间跟进.主要需要关注的是
tensorflow
的需求,现在比较通用的是v10.0版本,对应的tensorflow版本为1.13.1.安装好后我们最好一年都别改了 -
下载并安装cudnn
类似cuda的安装,同样参考官方文档,注意不要安装最新的版本,因为各种框架不会第一时间跟进. 现在比较通用的版本是cudnn v7.5版本.
-
配置环境变量
在系统变量中将cuda的安装位置放到变量CUDA_PATH
和CUDA_PATH_V10_0
下,将cudnn的位置放到CudaDNN
变量下,并且将$CUDA_PATH\bin
和%CUDA_PATH%\lib\x64
加入PATH
变量方便使用.win10下编辑界面很友好,我就不截图了.
anaconda环境安装
我们的开发实验环境使用python作为语言,最方便的方式就是使用anaconda环境.这部分不多说,可以看我的这篇文章
-
我们按照其中的介绍新建一个虚拟环境tf36
conda create -n tf36 python=3.6
-
创建完成后进入虚拟环境
activate tf36
- 这之后由于pip的版本过旧,可以使用
python -m pip install --upgrade pip
更新下 - 安装下jupyter kernel的依赖
pip install jupyter-client ipython ipykernel
tensorflow安装与配置
相对而言,tensorflow就好装的多,它只用anaconda就可以安装了
在linux下安装需要挑选好安装的python是哪个版本,具体支持哪些python版本可以在这个网页查看
,安装只需要pip install --ignore-installed --upgrade <url>
就行,其中的url就是查到的对应版本的地址.
windows下安装目前推荐3.6版本,安装只需要pip3 install --ignore-installed --upgrade tensorflow-gpu
即可.
测试安装成功
import tensorflow as tf
with tf.device('/cpu:0'):
a = tf.constant([1.0,2.0,3.0],shape=[3],name='a')
b = tf.constant([1.0,2.0,3.0],shape=[3],name='b')
with tf.device('/gpu:1'):
c = a+b
sess = tf.Session(
config=tf.ConfigProto(
allow_soft_placement=True,
log_device_placement=True
)
)
sess.run(tf.global_variables_initializer())
print(sess.run(c))
如果正常输出[2.,4.,6.]
那么说明安装成功.如果报错提示找不到dll一般来说是因为安装的时候依赖版本有问题.我目前的配置是没有问题的.
keras
keras是一个纯粹的python包,安装只需要使用pip即可:pip install keras
keras实际上只是一个编程前端,实际的运行是调用后端.后端可以是theano,tensorfolw,推荐使用tf作为后端,目前这个后端支持最为充分.
配置方式是在~/.keras/keras.json
(windows下是在个人用户目录下的.keras\keras.json
位置)文件中设置.
默认配置如下:
{
"image_data_format": "channels_last",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}
-
iamge_data_format
字符串,”channels_last”或”channels_first”,该选项指定了Keras将要使用的维度顺序,可通过keras.backend.image_data_format()来获取当前的维度顺序。对2D数据来说,”channels_last”假定维度顺序为(rows,cols,channels)而”channels_first”假定维度顺序为(channels, rows, cols)。对3D数据而言,”channels_last”假定(conv_dim1, conv_dim2, conv_dim3, channels),”channels_first”则是(channels, conv_dim1, conv_dim2, conv_dim3)
-
epsilon
浮点数,防止除0错误的小数字
-
floatx
字符串,”float16”, “float32”, “float64”之一,为浮点数精度
-
backend
字符串,所使用的后端,为”tensorflow”或”theano”
测试安装成功
from keras import backend as K
如果有warning提示Using TensorFlow backend.
则说明安装成功且使用了tf的后端
pytorch
pytorch安装方式就是使用pip安装.
pip install https://download.pytorch.org/whl/cu100/torch-1.0.1-cp36-cp36m-win_amd64.whl
pip3 install torchvision
测试安装成功
import torch
x = torch.rand(5, 3)
print(x)
torch.cuda.is_available()
如果返回True
说明已经使用gpu了.
总结
windows下tf的安装比较麻烦,需要严格按照依赖一步一步执行,但官网的依赖说明又并不完善,按这次重装的经验有些依赖是真的没有写出具体版本.我是在工单中找到的tf1.13.1需要cuda10.0的信息.
相对来说pytorch的安装体验要好的多.不过可惜工业上用的真的不多.