windows下编译Matconvnet的环境配置(CPU和GPU版本)

matconvnet实现深度学习中卷积神经网络(CNN)的MATLAB工具箱,简单且高效,在文件中有许多已经训练好的近年来比较有名卷积神经网络实例及优化方法,可以用于图像分类、分割、人脸识别、文本检测等多个方面,matconvnet的运行版本有两种,cpu和gpu版本,运行环境也有windows和linux区别,在本文中,旨在介绍一下windows下matconvnet的两种版本的配置情况,linux环境下的两种版本的配置会在后续的博文中详细介绍。
一.准备工作:

1.需要的软件:

(1)matconvnet深度学习工具包(我这里用的是matconvnet-1.0-beta20,版本无所谓,无非是多加了一下近些
年提出的新的方法)
可以点击这里下载(官网):http://www.vlfeat.org/matconvnet/
(2)matlab2015a(win64)
(3)vs2013
注:MATLAB版本与vs版本要对应,具体对应要求在此:
https://cn.mathworks.com/support/sysreq/previous_releases.html
(4)cuda8.0(matconvnet要求显卡要是INVIDA的,要满足compute compability>2.0,而且不同的显卡对cuda
的要求不同,我们这里用的是GTX1070显卡,所以要用cuda8.0,k2000就可以用cuda7.5)
官网下载:https://developer.nvidia.com/cuda-toolkit
(5)v5版本的cudnn(cuda7.5对应cudnn v4)
(6)在安装cuda 8.0之前要先安装上cudadriver(自行查找对应版本即可)
安装完cuda driver可以通过在MATLAB中输入gpuDevice来查看显卡的一些细节(例如compute compability)
运行gpuDevice,这里是我的显卡GTX1070:
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第1张图片

2.环境:win7 64bit

二:matconvnet环境配置(重点)
matconvnet的应用有两个版本,cpu和gpu版本,gpu版本要比cpu版本速度更快,这里将介绍两种版本的环境配置方法。
matlab的安装与vs的安装还请读者自行查找吧,都有教程,照着装就行,这里就不介绍了。
1.cpu版本的配置:
cpu版本的配置很简单,只需要两行命令(依次在matlab中运行下面两个命令即可)
(1)mex -setup
这个命令是来寻找vs编译器的命令,因为matconvnet的文件中的方法的实现是封装在cuda c程序中的(matlab文件夹下的src文件里的.cu文件),所以需要链接c++编译器。
刚开始会有选择编译器的阶段,如果有编译器,MATLAB会识别出来并列出,照着选就行。
成功后会出现如下结果:
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第2张图片
(2)运行vl_compilenn 程序(matlab文件夹下)
成功后即可运行matconvnet中example里面的一些示例程序了,出现如下界面代表成功了:
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第3张图片
2.gpu版本的配置:

gpu版本的配置相对cpu来说要复杂一些:
(1)安装cuda(别忘了先安装cuda driver),正常安装即可,没有特殊的要求,这里建议安装到默认路径,不要改变,防止之后填写环境变量的时候出现差错(添加环境变量网上都有,这里给个参考http://blog.csdn.net/lvfeiya/article/details/53325784(十分感谢这位童鞋))
cuda安装完了以后可以在doc窗口下,利用nvcc -V来验证是否已经安装上了cuda
(2)在matconvnet-1.0-beta20中建一个local文件夹(与example和matlab等同一”级别”),然后把cudnn放进去,如下图所示:
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第4张图片
然后将图中COPYING下面的cudnn64_4.dll用cudnn-rc4中bin文件夹下的cudnn64_4.dll替换。
(3)
把cudnn中的bin,lib/x64,include中的文件分别拷贝至
C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v8.0中的bin,lib/x64,include三个子目录下。(这里的路径对应cuda的安装路径)
(4)将nvcc路径加入环境变量中:
MW_NVCC_PATH:C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第5张图片
(5)重新编译vl_compilenn程序:

vl_compilenn('enableGpu',true,'cudaRoot','C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0','cudaMethod','nvcc','enableCudnn','true','cudnnRoot','local/cudnn-rc4')

注:
里面的几个参数应该都能够看懂,这里的cudnnRoot就是查找文件夹local的cudnn-rc4,当然也可以把之前建立的local文件夹设置成别的名字,只不过修改完之后在这里需要将cudnnRoot的名字改成新的文件夹的名称。
(6)最后,如何运行gpu版本的example中的示例程序(以mnist手写数字程序为例)
很简单,只需将cnn_mnist.m程序中的opts.train.gpus改成1即可:
windows下编译Matconvnet的环境配置(CPU和GPU版本)_第6张图片
到此,windows下matconvnet的cpu与gpu版本的已经配置完成。
三:心得

刚开始配置的时候遇到了不少的坑,好在有网上各位大牛们的帮忙,所以在这里我自己也想做一个配置过程的总结,作为初学者有什么错误或是不明白的地方还希望童鞋们能够多多指点,多多交流,我们共同进步。
还有我上面的环境配置只是window版本的matconvnet配置,在linux版本下的配置还有很多不同,实践了以后我会尽快加上。

你可能感兴趣的:(环境配置)