ok,fine,终于到了最关键的时刻了,配置GPU
GPU是什么玩意儿我觉得不必多说,只要知道它是可以让你在计算机视觉任务中一步封神的传说级道具就行了,但这个爆率,非常的低,maybe只有1%...
Cuda、Cudnn,百度一搜基本上都是这两个内容,接下来由我来解答一下爆率问题:
1. 50%的玩家在看到别人写的配置过程后,直接放弃
2. 40%的玩家在尝试配置的过程中,各种Bug,然后心灰意冷,发票圈说想把电脑砸了
3. 剩下9%的玩家,他们只离巅峰宝座最近的人群,历经千辛万苦,然后成功安装了Cuda和Cudnn,install tensorflow-gpu之后,import tensorflow也没有报错。在人生巅峰之际,他们产生了一个疑问,为什么我的数据还是在CPU上进行计算???楼猪你的方法我亲测有问题呀!(黑化评论区杀手)
其实上面讲了这么多,还是想要强调一点,版本的重要性。举个例子,假设鲁迅重生到今天,你拿着自己写的文章请先生帮你点评,这个时候鲁大师会回你一句:这啥玩意儿?
原因呢?鲁迅那个年代用的是繁体字,结果你来个简体中文,这岂不是找骂。
深度学习框架的版本也是如此,需要找到那个年代对应的资源才行。
在TensorFlow官网,我们可以很清晰的看到每个版本对应的Python版本和Cuda、Cudnn版本。
https://tensorflow.google.cn/
根据此表显示,我们的TensorFlow是1.7.0版本,所以对应的Cuda应该是9,Cudnn是7才对。
楼猪亲测可以安装Cuda10,但最后GPU无效,接下来进入正题。
官网:https://developer.nvidia.com/cuda-toolkit
到官网中找到CUDA9.0的安装包,并进行下载
同样,友情提供百度云链接
链接:https://pan.baidu.com/s/1BmujQ_rR05ccyAJSRXu0Lg
提取码:q4io
精简和自定义安装皆可,默认安装就行,如果想要修改路径的话,需要将路径加入系统环境中,做不到的小盆友就老老实实的默认安装吧。
在终端中输入nvcc -V,出现以下内容就代表安装成功了
cuDNN是CUDA必要的驱动文件,可在官网直接下载
https://developer.nvidia.com/rdp/cudnn-archive
很直观的可以看到,我们安装的CUDA版本是9.0,所以只有下载对应的cuDNN就好了。
然后吧,如果您下载了最新版本的,譬如我列举出的7.6.4版本的话,我只想说一句,孩子,你没救了,看到什么新就想要什么,这什么毛病啊...
很负责的告诉你,这里躺着一个大坑,没错,我们需要cuDNN7版本的,但是,是7.0的!!!
在上述的百度云链接中,我已经把对应版本的都放进去了,直接下载即可,当然也可以挑战外网的速度。
下载完解压后子目录有三个文件夹,接下来打开刚刚CUDA的安装路径
默认的话路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
把cuDNN的文件拷贝到CUDA中,注意lib是子目录下x64的文件,接着在系统环境下添加lib\x64目录
这样理论上就安装好了,接下来就是测试环节
在之前的Python环境安装中,我们安装的tensorflow是cpu版本的,所以要卸载了重新安装gpu版本的框架
首先在命令行中输入pip uninstall -y tensorflow
接着输入 pip install tensorflow-gpu==1.7.0
测试成功,接下来就开始愉快的GPU之旅吧
编辑align_dataset_mtcnn.py文件,移至第54行
将
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False))
修改为
config = tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False, allow_soft_placement=True)
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
不要忘了在虚拟环境中也更替此文件
接着输入预处理训练集的命令
python src/align/align_dataset_mtcnn.py datasets/vggface2/train/ datasets/vggface2/train_182 --image_size 182 --margin 44
运行成功后打开任务管理器或者在终端中查看GPU的使用情况
成功!!!
下一章将介绍利用处理好的训练集进行模型训练,并在lfw数据集上进行验证