win10安装matconvnet vl nnconv时vl_compilenn出错

记录学习的技能和遇到的问题
MatConvNet学习笔记
长期招聘计算机视觉/深度学习等方向的工程师或实习生。感兴趣的话,请发送邮件,可以内推。
MatConvNet是VLFeat的一部分,是卷积神经网络(CNN)的一个实现。既可以使用matlab编程,又能使用GPU加速,是一个不错的CNN库。
下载MatConvNet工具箱
我下载的版本是 matconvnet-1.0-beta13.tar
将压缩文件解压到 matconvnet-1.0-beta13.tar中
编译前,Matlab应该已经绑定C++编译器了。否则,会出错。Windows下安装Visual Studio即可,Linux下有自带的GCC
在Matlab中输入mex -setup,绑定C++编译器
打开Matlab,将工作路径切换到…/matconvnet-1.0-beta13.tar
在Matlab中执行命令: addpath matlab。添加搜索路径。
在Matlab中执行命令:vl_compilenn。编译工具箱。
在Matlab中执行命令:vl_setupnn。设置工具箱。
至此,工具箱已经安装完毕。
*在Matlab中执行命令:vl_test_nnlayers。测试
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Matconvnet学习笔记
  Introduction to Matconvnet
  MatConvNet是实现用于计算机视觉领域的卷积神经网络(CNN)的MATLAB工具箱。自从取得突破性工作以来,CNN在计算机视觉领域有一个重大影响,特别是图像理解,基本上取代了传统图像表示。有许多其他机器学习、深度学习和CNN开源库的存在。一些最受欢迎的:CudaConvNet ,Torch, Theano,Caffe等。MatConvNet是为研究人员提供一个尤其是友好和高效使用的环境,它其中包含许多CNN计算块,如卷积,归一化和池化等等,他们中的大部分是使用C++或CUDA编写的,这意味着它允许使用者写新的块来提高计算效率。MatConvNet可以学习AlexNet等大型深度CNN模型,这些强大的模型的Pre-trained版本可以从MatConvNet主页下载。虽然强大,但是MatConvNet易于使用和安装。实现是完全独立的,只需要MATLAB和兼容的c++编译器(使用GPU代码免费提供CUDA
DevKit和合适的NVIDIA GPU)。
  [注]:我下载的版本是matconvnet-1.0-beta19,这个在可以从MatConvNet主页下载,下载网址如下:
  一、Getting started
  编译MatConvNet的CPU版本
  首先通过一个简单但是完整的例子看一下CNN是如何完成下载MatConvNet,编译,下载pre-trained CNN 模型,完成MATLAB图片分类的过程。代码可以从MatConvNet主页的获得。
% install and compile MatConvNet (needed once)
untar('http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta20.tar.gz') ;
cd matconvnet-1.0-beta20
run matlab/vl_compilenn
% download a pre-trained CNN from the web (needed once)
urlwrite(...
'http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat', ...
'imagenet-vgg-f.mat') ;
% setup MatConvNet
matlab/vl_setupnn
% load the pre-trained CNN
net = load('imagenet-vgg-f.mat') ;
net = vl_simplenn_tidy(net) ;
% load and preprocess an image
im = imread('peppers.png') ;
im_ = single(im) ; % note: 0-255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = bsxfun(@minus, im_, net.meta.normalization.averageImage) ;
% run the CNN
res = vl_simplenn(net, im_) ;
% show the classification result
scores = squeeze(gather(res(end).x)) ;
[bestScore, best] = max(scores) ;
figure(1) ; imagesc(im) ;
title(sprintf('%s (%d), score %.3f',...
net.meta.classes.description{best}, best, bestScore));
  注:1、untar('http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta20.tar.gz') 是下载安装包的过程,建议单独下载其ZIP包,解压后放在任意位置,运行程序的时候会通过vl_setupnn()自动添加路径到Matlab中。下载时最好使用浏览器内置的下载器,因为迅雷下载下来的是一个txt文件,还需要转换。
    2、run matlab/vl_compilenn是编译的过程,前提是要求matlab与编译器(VSc++)实现连接,如果没有可以使用mex -setup命令,设置matlab的C++编译器,提示MEX成功,才可以运行example中的示例。这个实际上就是配置Matconvnet的过程,只需要两句话:mex -run
matlab/vl_compilenn
    3、run matlab/vl_setupnn,这句话在运行时总是报错,提示错误使用cd(当然上一句也可能出现这个问题,但我是直接运行的vl_compilenn,所以没出现,嘿嘿),在这里我将这句话改为run(fullfile(fileparts(mfilename('fullpath')),...
      '..', 'matlab', 'vl_setupnn.m')) ,当然具体的语句与你所设的路径有关,就没有出现报错了。
    4.net = load('imagenet-vgg-f.mat')这里net就是这个工具库所需要的预训练模型,在这里面链式网络已经架构完成,它的呈现形式是一个结构体,包括两部分,layers(因为这个结构有21层,故包含21个元胞)和meta(包含2个结构体,类别和标准化信息)。
    5、程序的主体代码为vl_simplenn,包括CNN网络的输入输出及调用函数的过程。
  编译MatConvNet的GPU版本
  在GPU条件下编译,首先你的显卡得是INVIDA的,并且需要compute compability&2.0,其次一定要考虑版本相互协调的问题,我使用的版本是window7 65bits,vs2013,cuda7.5,MATLAB2014a,显卡是GTX960,compute compability=5.2,关于显卡是否合乎要求,也可以通过下载软件GPU Caps Viewer查看。
  编译MatConvNet的GPU版本的具体步骤如下:
  (1)官网下载CUDA 7.5.18、 以及 CUDA_Quick_Start_Guide.pdf,CUDA Toolkit 7.5.18 下载地址:
(2) 直接解压安装,建议采用默认安装的方式,方便MatConvNet按默认方式找到CUDA 编译器‘nvcc’。关于cuda与vs的具体配置,可以参考和
(3) 完成后打开 cuda samples 文件夹下 Samples_vs2013.sln 分别在DEBUG 和Release X64下进行完整编译。编译过程如提示找不到”d3dx9.h”、”d3dx10.h”、”d3dx11.h”头文件,则百度下载DXSDK_Jun10.exe并安装。下载网址 之后再重新编译。
(4) 全部编译成功之后,打开CUDA Samples 文件夹下的 bin/win64/release ,如下图。运行其中的小程序,即可查看GPU CUDA信息。PASS 为通过。
  (5)安装cudnn-win64-v4.0/or-v3.0,下载网址直接解压到某文件夹下,将cudnn64_4.dll 文件拷贝到 ./matconvnet/Matlab/mex文件夹下即可。
  (6)编译vl_compilenn程序,注意根据实际情况修改一些信息,大致调用方式为vl_compilenn('enableGpu',true,,'cudaMethod' ,'nvcc','enableCudnn','true','cudnnRoot','local/cuda),提示mex成功,则证明工作完成一大半了。
  (7)最后就是运行cnn_cifa.m文件,运行前将程序中 opts.gpuDevice =[]改为opts.gpuDevice =[1];表示使用GPU显卡运行,运行结果如图
  可见速度是相当快的!
  接下来我们介绍一下这个工具库中的一些计算函数,方便大家理解。
  Conputationnal blocks:实现cnn的计算块
  一、卷积
  Y = VL_NNCONV(X, F, B)计算图像堆x的卷积,F是卷积核,B是偏置。X=H*W*D*N, (H,W)是图像的高和宽,D是图像深度(特征频道的数目,例彩色就是3),N是堆中图像的数目。F=FW*FH*FD*K ,(FH,FW)是卷积核的大小,FD是卷积核的深度,须与D一致,或能整除D,K是卷积核的数目。针对一幅图像来说,卷积的公式为:
其中ij分别代表图像的高和宽,d”则代表了卷积核的数目,从而对应d”个输出。
  [DZDX, DZDF, DZDB] = VL_NNCONV(X, F, B, DZDY)计算映射到DZDY上的块的导数。这是反向传播中应用的梯度计算公式。
  另外还有一些具体的变量设置。包括Stride=(sh,sw)是步长,即在卷积过程中每次移动的大小,这也决定了最后输出的大小,pad是补0的大小,表示为:
则最终输出的大小为:
  [注]:1、在Matconvnet中并不区分全连接层和卷积层,而认为前者是后者的一种特殊情况。
     2、在Matconvnet中有Filter groups(即滤波组)的概念,意思是说vl_nnconv允许对输入x的通道进行分组,且每组应用不同子集的过滤器。groups=D/D',D是图像深度,D'是滤波器的深度,从而第一组可包括输入的1、2,,,D'维度,第二组包括输入的D'+1,,,2D',以此类推,但输出的大小是不变的。
  二、卷积转换(反卷积)
  Y = VL_NNCONVT(X, F, B)计算CNN的卷积转换,即进行卷积的反操作,其输入输出形式与上同。由于卷积支持输入补0输出进行下采样,因此反卷积支持输入上采样输出裁剪。
  三、空间池化
  Y = VL_NNPOOL(X, POOL)或Y = VL_NNPOOL(X, [POOLY, POOLX])对输入x的每个通道进行池化操作,池化的方式可以是求patch的最大值或平均值。同卷积相同,池化也支持pad和Stride操作,但pad有时是补负无穷。
  四、激活函数
  RELU函数:y = vl_nnrelu(x,dzdy,varargin),在leak=0时,表达式为
  Sigmoid函数:out = vl_nnsigmoid(x,dzdy)
  这里只给出了正向传播时的函数表达式,反向传播的(涉及dzdy)具体表达式可以看程序。
  五、归一化
  1、VL_NNNORMALIZE :CNN Local Response Normalization (LRN)
  Local Response Normalization是对一个局部的输入区域进行的归一化,从表达式来看,也就是对每一个groups(前文)里的输入的相应子集进行归一化。表达式如下;其中的参数包括PARAM = [N KAPPA ALPHA BETA]
  其中G(k)是对应通道k的输入相应子集,在程序中定义为 Q(k) = [max(1, k-FLOOR((N-1)/2)), min(D, k+CEIL((N-1)/2))];
  2、VL_NNBNORM CNN 实现批次归一化
  Y = VL_NNBNORM(X,G,B),这里XY均是4维张量,第4维T表示每批次处理的大小。标准化的表达式为
  3.VL_NNSPNORM实现空间归一化
  y = vl_nnspnorm(x, param, dzdy),PARAM = [PH PW ALPHA BETA];即对每个通道先进行池化操作,池化的方式为取平均,然后在进行归一化操作。其表达式为
  4、VL_NNSOFTMAX CNN softmax
  Y = vl_nnsoftmax(X,dzdY):在一个groups(前文)中应用softmax函数,softmax函数可以看做一个激活函数和一个归一化操作的联合
   六、损失和比较
  1、 [y1, y2] = vl_nnpdist(x, x0, p, varargin)计算每个向量x与目标x0之间的距离,定义为:
  2. Y = vl_nnloss(X,c,dzdy,varargin)
---恢复内容结束---
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Window环境MatConvNet安装
Window环境MatConvNet安装
作者:Kindle君
时间:日。
声明:版权所有,转载请联系作者并注明出处
GPU版本Matlab编译
一、准备GPU和C++环境
目录: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
根目录:D:\Program Files\MATLAB\matconvnet-1.0-beta24\local\cudnn
子目录:同时将cudnn64_5.dll 复制到 matlab/mex目录下
\cudnn\bin
\cudnn\include
\cudnn\lib
3. 安装VS2013
使用自己的安装包,目的是安装C++编译器
二、安装MatConvNet
主目录: D:\Program Files\MATLAB\matconvnet-1.0-beta24(需要解压两次)
2. 测试C++编译器是否成功安装
添加搜索路径
在主目录下打开matlab,运行addpath matlab。添加搜索路径。
4. 编译工具箱
编译完以后,理论上没问题应该是在安装目录下的mex下,多出一系列的.mexw64 编译文件,(64位系统),如果没有就证明没有编译成功。
step 1. vl_compilenn('enableGpu', true, ...
'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...
'cudaMethod', 'nvcc', ...
'enableCudnn', true, ...
'cudnnRoot', 'local/cudnn') ;
step 2. 单独运行 vl_compilenn 语句,可能step1,2重合,不过没关系.
a.出现如下Warning:
Warning: CL.EXE not found in PATH. Trying to guess out of mex setup.
& In vl_compilenn&check_clpath (line 580)
In vl_compilenn (line 413)
'cl.exe' is not recognized as an internal or external command,
operable program or batch file.
Error using vl_compilenn&check_clpath (line 591)
Unable to find cl.exe
b.解决办法:
D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
都添加到环境变量,具体是哪个起作用不清楚,但是who cares?It works!
vl_compilenn('enableGpu', true, ...
'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...
'cudaMethod', 'nvcc', ...
'enableCudnn', true, ...
'cudnnRoot', 'local/cudnn') ;
5. 设置工具箱
vl_setupnn 说每次调用的时候,需要·vl_setupnn(),尚未测试,测完再回来改*
测试之前一定记得,先`vl_compilenn('enablegpu',true)`和`vl_setupnn()`编译一下
1.普通测试
cpu模式:运行vl_testnn,返回如下提示,说明正确安装
1x1683TestResult 数组(具有属性):
Incomplete
1683 Passed, 0 Failed, 0 Incomplete.
161.6398 秒测试时间。
gpu模式: vl_testnn(‘gpu’, true),返回如下:要下载我就不下了
算了,最后结果还是加上来把,不能偷懒:
正在拆解 nnspnorm[dataType=single,device=gpu]
拆解 nnspnorm[dataType=single,device=gpu] 在 0 秒内完成
nnspnorm 在 4.4619 秒内完成
__________
1x3366TestResult 数组(具有属性):
Incomplete
3366 Passed, 0 Failed, 0 Incomplete.
秒测试时间。
2. fast-rcnn目标检测模型
下载模型:http://www.vlfeat.org/matconvnet/models/fast-rcnn-vgg16-pascal07-dagnn.mat
放置目录:D:\Program Files\MATLAB\matconvnet-1.0-beta24\data\models
运行:run examples\fast_rcnn\fast_rcnn_demo.m ,出现如下bug:
run examples\fast_rcnn\fast_rcnn_demo.m
opts.modelPath = paths{ok}
警告: 读取压缩数据时出现意外的文件结尾。
& In fast_rcnn_demo (line 41)
In run (line 96)
In onCleanup/delete (line 60)
In run (line 28)
In onCleanup/delete (line 60)
In run (line 28)
In onCleanup/delete (line 60)
In run (line 28)
解决办法:
模型没下载完,需要重新下载,感谢同届实习生潇潇童鞋的提醒。
下载好之后,先编译CNN,重新运行,出现如下bug,原因显卡内存不够,小小的GTX960,还是2G的显存,我的天哪,真惨!:
运行命令行,查看GPU使用情况,瞬间呵呵!
gpuDevice()
CUDADevice (具有属性):
Name: 'GeForce GTX 960'
ComputeCapability: '5.2'
SupportsDouble: 1
DriverVersion: 8
ToolkitVersion: 7.5000
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 2.1475e+09
AvailableMemory:
MultiprocessorCount: 8
ClockRateKHz: 1228000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
CanMapHostMemory: 1
DeviceSupported: 1
DeviceSelected: 1
3. 2017CVPR-CFnet端到端目标跟踪demo运行
CFnet是最新的目标跟踪模型,github上有源码和教程,前面的步骤不多赘述,按照作者提供的教程来就行,这里主要介绍一下在运行demo语句之前,需要对Matlab的MatConvnet做哪些操作。
1. 在要运行的文件所在目录的matlab命令行,启动MatConvnet,语句如下: run D:\matconvnet-1.0-beta24.tar\matconvnet-1.0-beta24\matlab\vl_setupnn.m 没有任何提示,说明成功启动
2. 要使用GPU模式,据潇潇说,只需要在安装过程中,运行vl_compilenn('enablegpu',true)即可,也就是说要是之前运行过,那就会默认用GPU运行,有待我这个初学者进一步试验。
3. 配置环境变量
function paths = env_paths_tracking(varargin)
paths.net_base = 'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\networks/';
paths.eval_set_base =
'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\data/';
paths.stats = 'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\data/ILSVRC2015.stats.mat';
paths = vl_argparse(paths, varargin);
4.运行run_cfnet2_evaluation.m即可成功运行
5.切换GPU开关,在tracker.m文件下的net_z = init_net(net_z, p.gpus, p.init_gpu);语句可以看到,将p.gpus=1改为p.gpus=[],查看运行效率 即可
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Matconvnet 的安装以及使用
是matlab上进行CNN的框架。本文介绍windows下如何安装以及使用它对pre-trained的网络进行finetuning. 这里以win10为例,cuda版本为7.5,cudnn的版本为v3.fine tune的网络VGG-19.
一.matconvnet 安装
1.Precondition: 如果是编译cpu版本的,只需要matlab安装了mex就可以(c与matlab的混编 ,在matlab的commander里输入mex -setup C++搞定)。
如果是编译GPU的话,首先是需要GPU(其实所有独立显卡都可以),然后安装好用于cu文件的编译;如果想使用nvidia正对CNN的加速需要下载cudnn。
下载完自己需要的版本之后就可以在matlab编译安装了。这里只介绍GPU的安装。
以matconvnet的目录作为当前目录,添加matlab路径到查找目录,然后将cudnn文件夹复制到当前目录,整个目录结构如下:
其中finetune目录是我后面finetune用到的,这里主要注意把cudnn(图中是cuda)复制到当前目录。
然后既可以按照的命令进行编译:
gpuDevice()可以查看你的显卡信息,同时可以看cuda toolkit的版本。
vl_compilenn('enableGpu',true,'cudaMethod','nvcc','cudaRoot','C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v7.5','enableCudnn',true,'cudnnRoot','cuda')
这里需要把cudaRoot后面的路径换做你自己安装的cuda 路径,cudnnRoot后的路径换为你cudnn的路径。同时不用cudnn的话将后面两项去掉即可。如果在编译cudnn版本的时候提示找不到cudnn.h文件,那多数是路径不对,此时一个有效的办法是将cudnn里面的子目录的文件copy到cuda安装路径(上条命令中的cudaRoot参数)下的对应目录下。
下面就可以进行测试了:
vl_testnn(‘gpu’,true)
这里有个问题就是编译的时候可能会出其他错误,如果是说某个函数的参数不对(too few arguments)这种错误,很有可能是版本问题引起的,建议更换了cudnn版本后重新编译。或者先不用cudnn看是否编译成功。
还遇到一个问题,类似与error using mex cc: unsupported gpu architecture ‘compute_52’,这是因为这个值只能取10倍数,在vl_compilenn里面的cudaArch函数里面将arch_code固定为你自己的GPU的计算能力即可(取最接近的10的倍数,要用字符格式),如下:
function cudaArch = get_cuda_arch(opts)
% --------------------------------------------------------------------
opts.verbose && fprintf('%s:\tCUDA: determining GPU compute capability (use the ''CudaArch'' option to override)\n', mfilename);
gpu_device = gpuDevice();
arch_code = strrep(gpu_device.ComputeCapability, '.', '');
arch_code = '50'%自己添加的
cudaArch = ...
sprintf('-gencode=arch=compute_%s,code=\\\"sm_%s,compute_%s\\\" ', ...
arch_code, arch_code, arch_code) ;
opts.verbose && fprintf(['%s:\tCUDA: cannot determine the capabilities of the installed GPU;' ...
'falling back to default\n'], mfilename);
cudaArch = opts.defCudaA
二 fine tune CNN
如果上面的步骤训练,下面就可以用matconvnet工具包了。examples目录下面有许多很好的例子,墙裂推荐。这里以对VGG-19网络fine tune为例,也就是使用pre-trianed网络,然后用自己的数据进行fine tune,得到针对自己数据集的网络。主要步骤分为:参数设定;准备数据;准备网络;训练网络;部署网络;
run(fullfile(fileparts(mfilename('fullpath')), ...
'..', 'matlab', 'vl_setupnn.m')) ;
opts.dataDir = 'YourDataPath' ;
opts.expDir
= 'YourOutputPath';
opts.modelPath = fullfile('YourModelPath','imagenet-vgg-verydeep-19.mat');
opts.train = struct() ;
opts.train.gpus = [1];
opts.train.batchSize = 40;
opts.train.numSubBatches = 4 ;
opts.contrastNormalization = true;
opts.lite = false ;
if ~isfield(opts.train, 'gpus'), opts.train.gpus = []; end;
opts = vl_argparse(opts, varargin) ;
acc_list = [];
modelPath = ['PATHTOSAVEMODEL'.mat'];
imdbname = ['imdb.mat'];
opts.imdbPath = fullfile(opts.expDir, imdbname);
if exist(opts.imdbPath,'file')
imdb = load(opts.imdbPath) ;
imdb = getEggImdb(opts) ;
net = load(opts.modelPath);
net.layers
= net.layers(1:end-2);
lr = [0.005 0.002];
for i = 1:size(net.layers,2)
if(strcmp(net.layers{i}.type,'conv'))
net.layers{i}.learningRate = lr;
net.layers{end+1} = struct('name','fc8_egg','type', 'conv', ...
'weights', {{0.05*randn(1,1,4096,YOURCLASSNUM, 'single'), zeros(1,YOURCLASSNUM,'single')}}, ...
'learningRate',[0.005 0.002], ...
'stride', [1 1], ...
'pad', [0 0 0 0], ...
'opts',{cell(0,0)}) ;
net.layers{end+1} = struct('type','softmaxloss','opts',{cell(0,0)});
opts.train.train = find(imdb.images.set==1) ;
opts.train.val = find(imdb.images.set==3) ;
[net, info] = cnn_train(net, imdb,opts.iband, @getBatch, ...
'expDir', opts.expDir, ...
opts.train);
net = cnn_deploy(net);
save(modelPath, '-struct', 'net') ;
acc_list(end+1) = test_val_data(modelPath,iband);
function [im, labels] = getBatch(imdb, batch)
im = imdb.images.data(:,:,:,batch) ;
labels = imdb.images.labels(1,batch) ;
if rand & 0.5, im=fliplr(im) ; end
需要注意的是每层的learning rate也是我们可以根据效果调的地方,里面的有几个函数需要自己修改:getEggImdb是根据自己的数据集建立imdb的函数;cnn_deploy是对网络进行部署的函数,也很重要,因为fine tune后的网络不能直接用于测试。这几个文件应该在matconvnet里面都给出来了,可以照着更改,我也把自己的放到上了。
很多细节没来得及深究,多多指点。
Reference:
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Window环境MatConvNet安装
1. 下载MatConvNet
2. 解压安装包并编译
cd matconvnet-1.0-beta24
run matlab/vl_
3.将MatConvNet添加到matlab路径
run matlab/vl_setupnn
4. 测试代码
% Load a model and upgrade it to MatConvNet current version.
net = load('imagenet-vgg-f.mat') ;
net = vl_simplenn_tidy(net) ;
% Obtain and preprocess an image.
im = imread('peppers.png') ;
im_ = single(im) ; % note: 255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = im_ - net.meta.normalization.averageI
% Run the CNN.
res = vl_simplenn(net, im_) ;
% Show the classification result.
scores = squeeze(gather(res(end).x)) ;
[bestScore, best] = max(scores) ;
figure(1) ; imagesc(im) ;
title(sprintf('%s (%d), score %.3f',...
net.meta.classes.description{best}, best, bestScore)) ;
1. 安装CUDA8
eg: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
2. 下载cudnn
在MatConvNet建立目录:
local\cudnn:
bin,include, lib
同时将cudnn64_5.dll 复制到
matlab/mex目录下
3.重新编译:
vl_compilenn('enableGpu', true, ...
'cudaMethod', 'nvcc', ...
'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...
'enableCudnn', true, ...
'cudnnRoot', 'local/cudnn') ;
4.运行 samples
打开examples/mnist/cnn_mnist.m, 修改opts.train.gpus=[1];
1. fast-rcnn目标检测模型
下载模型:http:
放置目录:D:\matlab\matconvnet-1.0-beta24\data\models\fast-rcnn-vgg16-pascal07-dagnn.mat
运行:run examples\fast_rcnn\fast_rcnn_demo.m
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 vl compilenn运行出错 的文章

 

随机推荐