MatConvnet是MATLAB平台用于实现的卷积神经网络的工具箱。它支持CPU和GPU上的高效计算,允许在大型数据集上训练复杂模型。通过安装MatConvnet工具箱,可以为研究人员在Matlab平台上实现深度学习算法提供有效的支持。
MatConvnet的编译需要相应的C/C++编译器,本文对MatConvnet的GPU版本的安装基于MATLAB R2017b、VS 2017 与 cuda 9.2。此步骤涉及到的软件版本自行灵活搭建。文章末尾提供已编译的MatConvNet(GPU版本)的下载链接。
1、MatConvnet的下载
百度云下载地址:matconvnet-1.0-beta25.tar
在matlab目录中创建名为matconvnet的文件夹,提取matconvnet-1.0-beta25.tar。我的目录为 D:\MATLAB\matconvnet\matconvnet-1.0-beta25
2、在Matlab控制台输入命令
mex -setup
mex -setup C++
addpath matlab
vl_compilenn('enableGpu', true, 'cudaMethod', 'nvcc', ...
'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2', ...
'enableCudnn', true, 'cudnnRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2')
3、测试
控制台输入:vl_testnn
出现上图的界面,说明安装成功。
4、编译过程出现的问题
问题(1):'cl.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件
解决方法:把C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\bin
添加到系统环境变量。
问题(2):#error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!
解决方法:打开文件路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt 中的host_cofig.h文件,
将131行的#if _MSC_VER < 1600 || _MSC_VER > 1911,改为#if _MSC_VER < 1600 || _MSC_VER > 1920。数字比你版本高。
问题(3):找不到相应的头文件,比如出现 fatal error C1083: 无法打开包括文件: “corecrt.h”: No such file or director
出错 vl_compilenn (line 487)
nvcc_compile(opts, srcs{i}, objfile, flags) ;
解决方法:
应该是vs的配置问题。添加环境变量还存在着问题,比较便捷的方法,可以将相应的头文件从Windows Kits\10\Include\10.0.17134.0复制到如下目录:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include
问题(4):编译成功后运行代码的时候出现
尝试将 SCRIPT vl_nnconv 作为函数执行 ...
出错 vl_simplenn (line 300)
res(i+1).x = vl_nnconv(res(i).x, l.weights{1}, l.weights{2}, ...
解决方法:
每次启动matlab软件运行程序之前,安装一下工具箱。运行\matconvnet-1.0-beta25\matlab\vl_setupnn.m 文件,即在控制台输入run vl_setupnn.m。
5、已编译的MatConvNet(GPU版本)下载
下载链接:matconvnet-1.0-beta25(GPU已编译)