MatConvNet-1.0-beta25+Matlabb+CUDA8.0+VS安装

时间:2024-04-15 09:15:01

  感觉由于前期基础,做的还行,各种环境匹配,所以配置还是挺简单的。就是不知道后续代码看起来会不会难。运行速度到底咋样。  

  主要 参考了: 

  MatConvNet教程----- Win7下编译和配置详解

  MatConvNet+Matlab2017a+CUDA8.0安装

  win7+matlab2016b+matconvnet+1-25beta+vs2015安装

  整体总结:

  安装顺序:笔者推荐为matlab—visual studio—cuda,一般把cuda放在vs后安装,是因为如果cuda在vs之前安装,可能会导致vs安装之后新建项目里不会出现nvidia的项目。

1)其实就是注意好环境,安装就很简单了。

2)应该从github上找最新的版本,而不是从官网上下载。

3)一定要先编译CPU版本,再编译GPU版本,否则直接编译GPU版本的话会报错

  

4)并不支持所有的cudnn版本,要找到5.0或者5.1版本的cudnn才支持,不然会报错

  

5)

  

  

设置环境:

 

       解压matconvnet到matlab安装目录下。其实matconvnet可以放在任意位置,但是后面编译的时候可能要配置地址,避免安装不成功,就放在了matlab根目录下:

  

配置CPU版本(必须要先编译cpu版本,然后再gpu才不会出错的)

  运行mex -setup,  再提示信息中选择VS C++

  

  在C:\Program Files\MATLAB\R2017b\matconvnet-1.0-beta25\matlab文件夹下,运行vl_compilenn.m

  

  

  生成mex文件夹

  

  可以测试下:

  > vl_testnn

   

 

配置GPU版本: 

  修改C:\Program Files\MATLAB\R2017b\matconvnet-1.0-beta25\matlab\vl_compilenn

  由于显卡为1080,所以改arch为61。加入cudnn。我电脑是win7 64,cuda8。实验很多次都无法配置cudnn,所以放弃了。

  

  根据提示,在C:\Program Files\MATLAB\R2017b\matconvnet-1.0-beta25\matlab下新建local/cudnn,把cudnn全部拷贝进去

  

  把cudnn**.dll拷贝到C:\Program Files\MATLAB\R2017b\matconvnet-1.0-beta25\matlab\mex

  

   vl_compilenn(\'enableGpu\', true)

  

  

   

  测试:

  很多地方说要,但是我是直接运行cnn_cifar.m看结果的。

  

  

  

  也可以运行>> vl_testnn(\'gpu\', true)

  

  • 安装autonn

  Extract the AutoNN files somewhere, then pull up a Matlab console and get confortable! The first step is to add MatConvNet to the path (with vl_setupnn), as well as AutoNN (with setup_autonn). Note that no compilation is required for AutoNN.

  

  官网为上述操作。但是实际还是采用下面的操作,整体更整洁。

vl_contrib(\'install\', \'autonn\') ;
vl_contrib(\'setup\', \'autonn\') ;
vl_contrib(\'test\', \'autonn\') ; % optional
  •  配置mcnExtraLayers

The module is easiest to install with the vl_contrib package manager:

vl_contrib(\'install\', \'mcnExtraLayers\') ;
vl_contrib(\'setup\', \'mcnExtraLayers\') ;
vl_contrib(\'test\', \'mcnExtraLayers\') ; % optional

Matconvnet输出网络结构的语句

  这个需要先安装GraphViz

  net.print(\'Format\',\'dot\')