MatconvNet+VS2015+Matlab2018a+CUDA9+cudnn7:在matlab上搞深度学习,安装环境时遇到的大坑!

2023-05-16

事情发生的背景

作为刚入职的深度学习实习生,入职第一天,我领完电脑,刚装完电脑,分配好公司的ip,连chrome都还没来得及安装,就接到任务,需要实现给定的论文的方法,当然啦,我师傅给了我源代码、数据集和论文。

坑爹的是,这篇论文中用到的方法是在matlab上实现的,不是我用惯了的tensorflow+python...

虽说之前也用过matlab,但也仅仅一个月时间,还是很不熟悉的,而且对matlab有种莫名的惧怕,因为他给我一种高效但死板不灵活的感觉,再加上无法移植的硬伤,我以为深度学习应该不会去用它的呢,我听到深度学习框架,基本也是tensorflow、caffee、torch、mxnet之类的,啥时候能排到matab呀~~

算了,既然接到任务肯定得硬着头皮上的,要求我一周把环境装好并把程序调通~~我暗暗没底,因为装环境调代码有时候得看运气好不好~~

正式开搞

首先就是安装matlab咯,我安装的是matlab2018a,因为师傅说新一点的好~~

matlab2018的安装和破解我苦不多说了,甩个链接:安装matlab2018a

拿到源代码和数据集,抓住Readme.md就是看!好,了解到第一个小任务了!需要安装matconvnet!

matconvnet是在matlab上搞深度学习必要的工具箱,只要去网上下载下来就行,仍在某个角落也行,但是还是建议放在你安装matlab的目录下,方便使用。

天真的我以为这样就完事儿了,就急急忙忙打开matlab,启动环境:

先要运行mex -setup,但是悲催地第一步就报错了:

mex

原因是电脑里没有编译器,于是按照提示安装了MinGW-w64编译器:

安装完成后运行mex -setup成功,指定C++编译器:

指定C++编译器

然后就是把工作路径切到matconvNet的路径,编译vl_compilenn,这时又报错,提示找不到cl.exe

cl.exe是VS的程序,所以需要安装VS,鉴于安装了matlab2018,便安装对应的VS2015,安装VS2015是默认安装,并配置了系统环境变量,但是还是没能找到VS2015自带的编译器,通过网上查找的两个办法(修改msvc90shellopts.stp文件中的路径和版本号、下载文件,替换maxopts中的文件)依然不能解决问题。后来找到一篇文章说是VS2015现在不自带VC++编译器,我心想这不太可能吧,毕竟VS就是用来写C++程序的呀~后来我去VS想创建一个项目发现,新建项目都无法创建C++空项目,于是得出结论:我的VS2015确实没有安装C++编译器,于是就重新打开安装程序,去手动安装上了,最后去matlab一试,敲入vl_compilenn果然运行通过了~~

所以这也是血的教训,大家要抓住事情的本质啊,matlab就是要配合VS才能搞深度学习的!~~该装的软件,没法省~~

好了,现在搞定三项(matconvnet+matlab+VS)了,可以至少在cpu上跑代码了吧?

在改完代码中相关路径之后,再运行自己的代码,报错:

报错:未定义变量 "dagnn" 或类 "dagnn.DagNN.loadobj"。

这是因为我们之前只是编译了一下,但还没有启动matconvnet

还是在matconvnet 的路径下,在命令行输入vl_setupnn,启动matconvnet

好了,接着调程序,我基本把该改的都改完了,总该可以跑了吧?

没想到又报错:

3

意思很清楚明白了,就是要用GPU来跑~~可是我一个刚来的实习生,怎么可能直接给我一个又GPU的电脑嘛?

我调了半天,看看能不能调成在CPU上跑,嗯,我尽力了,不行,人家作者根本没考虑过在CPU上跑~~

于是边去申请公司GPU,终于给我分配了一个服务器,需要我以远程访问的形式去用这个电脑~

于是我就得又重新安装一遍开发环境

这台电脑已经安装了VS2017,所以我本着多一事不如少一事的思想,而且刚刚好我要装的matlab版本是2018,比较新,版本肯定对的上,就没有考虑安装VS2015~~

那就动手吧!轻车熟路地安装完matlab2018a、matconvnet、CUDA9.0和cudnn7.0之后,我信心满满地去检验环境。

但是,调试MATLAB的GPU环境时报错:

>> mexcuda mexGPUExample.cu
使用 'NVIDIA CUDA Compiler' 编译。
错误使用 mex
mexGPUExample.cu

c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): fatal error C1189: #error:  --
unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!


出错 mexcuda (line 157)
[varargout{1:nargout}] = mex(mexArguments{:});

原因是CUDA9.0仅支持到VS2017测试版
故需安装VS2015,安装完VS2015后编译mexcuda mexGPUExample.cu成功!

但是还不是功成圆满,接下来开启GPU加速又出错:

错误使用 mex
'F:\MATLAB\matconvnet\matlab\mex\vl_nnconv.mexw64' 使用了 '-R2018a' 进行编译并与 '-R2017b' 链接在一起。 有关详细信息,请参阅 MEX 文件
使用了一个 API 进行编译并与另一个 API 链接在一起。

出错 vl_compilenn>mex_link (line 627)
mex(args{:}) ;

出错 vl_compilenn (line 500)
mex_link(opts, objs, flags.mex_dir, flags) ;

我就纳闷了,我没有装matlab R2017b,哪来的这错误,还是度娘吧。

找了好久才找到能解决此问题的办法:解决办法点这里

然后重新启动GPU加速,又出现问题,问题接踵而至,我对照着网上的就解决办法一个一个解决:


1.25版本的MatConvNet中的vl_compilenn.m文件中在506行增加了这样的判断
if strcmp(arch, 'win64') && opts.enableCudnn
这要求&&符号前后都是逻辑值,所以在运行vl_compilenn函数中'enableCudnn'后面要跟true,而不是跟'true',即编译语句为:

vl_compilenn('enableGpu', true,'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot','.\local\cudnn-7.2.1'); % 这里填写你的cuDNN的路径 
 
否则会报Operands to the || and && operators must be convertible to logical scalar values的错误。 

又成功部分,并报错:

错误使用 copyfile
未找到匹配的文件。

出错 vl_compilenn (line 509)
  copyfile(fullfile(opts.cudnnRoot, 'bin', '*.dll'), flags.mex_dir);

解决方案:
把CUDA和cudnn的路径写成绝对路径

所以最终版启用GPU加速的命令为:

vl_compilenn('enableGpu', true,'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot','F:\MATLAB\matconvnet\local\cudnn-7.2.1');

终于大功告成了!

欢迎关注“pyhon修炼之道”,我们将持续更新新鲜python文章~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MatconvNet+VS2015+Matlab2018a+CUDA9+cudnn7:在matlab上搞深度学习,安装环境时遇到的大坑! 的相关文章

  • Ubuntu16.04中文输入法安装初战

    最近刚给笔记本装了Ubuntu 43 win10双系统 xff0c 但是ubuntu16 04没有自带中文输入法 xff0c 所以经过网上的一些经验搜索整合 xff0c 分享一下安装中文输入法的心得 本文主要介绍了谷歌拼音跟ibus中文输入
  • GoDaddy与Namecheap域名注册商对比分析

    默默鸟已经有几天没有更新博客 xff0c 博客更新的少是因为我必须在更新之前想好了围绕博客的主题更新 xff0c 而不是想到哪个就更新哪些内容 xff0c 一来可能不符合博客的中心 xff0c 二来对于用户群也有影响 xff0c 同事显得不
  • ubuntu18安装vnc远程桌面服务

    安装 vnc4server xff0c xfce4 sudo apt install vnc4server xfce4 xfce4 goodies 安装完成后配置VNC登录密码 vncpasswd 启动VNC server vncserve
  • 国内国外常用的10个云服务器可视化管理面板

    如今无论是搭建网站 xff0c 还是部署小程序 xff0c 甚至一些企业应用都会用到云服务求或者独立服务器 对于很多希望利用网站 网络创业的 xff0c 也会用到服务器 xff0c 不过在使用服务器过程中 xff0c 我们对于服务器环境的配
  • 几个Windows强力卸载工具软件推荐

    对于我们有在使用Windows系统的时候 xff0c 是不是会主动或者被动的安装一些软件和插件工具 殊不知日积月累之后 xff0c 系统中的软件会越来越多 xff0c 甚至有很多我们安装几个月甚至几年都不会用到的 这些软件 xff0c 其实
  • 几款值得选的SSH客户端软件

    对于服务器运维工作来说 xff0c 我们少不了SSH远程客户端管理工具 我们在用哪款呢 xff1f 比如常见用的包括PuTTY XShell WindTerm等 xff0c 有很多的付费或者免费的 xff0c 既然有这么多免费且好用的为什么
  • 原生态Ubuntu部署LAMP环境 PHP8.1+MySQL+Apache

    如果我们部署WEB环境用于网站项目 xff0c 我们还是建议用成熟的一键包或者可视化面板这种 xff0c 毕竟软件的部署和后续的运维方便很多 但是 xff0c 如果我们有需要学习Linux环境的原理 xff0c 那还是要学会原生态部署软件的
  • Passwork适合多人协作团队的自建密码管理器

    如今互联网已经深入我们的工作和生活中 xff0c 从办公 购物 学习每天都会用到各种网站平台 各种APP客户端 各种软件账户 xff0c 这就离不开对各个平台账户的管理 我们应该也知道 xff0c 账户的安全是至关重要的 xff0c 如果账
  • 完整利用Rsync实现服务器/网站数据增量同步备份

    我们在选择VPS 服务器架设项目之后 xff0c 所有的项目 网站数据都需要我们自行备份和维护 xff0c 即便有些服务商有提供管理型服务器 xff0c 但是数据自行备份和管理才是较为靠谱的 无论是网站 xff0c 还是其他项目 xff0c
  • 整理Nginx/Apache服务器配置HTTPS SSL证书示范教程

    昨天我们看到百度发布 34 百度烽火算法升级 34 xff0c 提到网站如果被劫持或者拦截可能会降低网站的权重和排名等问题 这使得我们网站需要使用HTTPS SSL证书来减少被拦截劫持的风险 其实在早些时候我们已经看到很多浏览器都强制要求网
  • 6个免费DNS解析服务商评测分析 适用于网站域名解析应用

    这几天我们很多网友应该知道CloudXNS DNS解析服务商预计7月15日会宣布停止提供免费解析服务而主营商业服务 虽然网络上提供免费DNS解析服务商很多 xff0c 但是毕竟这么多年CloudXNS域名解析稳定性还是不错的 xff0c 而
  • 两种方法修改数据库myslq密码

    搞了很久终于修改数据库密码成功了 命令行修改root密码 xff1a mysql gt UPDATE mysql user SET password 61 PASSWORD 新密码 WHERE User 61 root mysql gt F
  • 关于学生课堂行为识别算法

    目前基于针对学校做了一款考生行为识别算法 xff0c 算法可以在服务器部署 xff0c 也可以在前端设备如Jetson RK等边缘设备运行 xff0c 目前算法已经投入使用 xff0c 算法效果如下 目前算法在 2080Ti 服务器运行效率
  • 获取imagefield 类型图片的路径

    绝对路径 request build absolute uri 图片 url 相对路径 图片 url
  • mmdetection 常用命令

    1 多卡训练 CUDA VISIBLE DEVICES 61 0 1 2 3 PORT 61 15200 tool dist train py configs py 4 2 普通测试 python tools test py configs
  • yolov5 导出onnx 忽略检测层

    def forward self x z 61 inference output for i in range self nl x i 61 self m i x i conv bs ny nx 61 x i shape x bs 255
  • python opencv 添加运动模糊

    在训练过程中增加 运动模糊 class MotionBlur object def init self p 61 0 5 degree 61 5 angle 61 45 self p 61 p self degree 61 degree s
  • pth 多类模型改成一类模型

    import torch import copy def change pth input pth out pth model dir 61 input pth checkpoint 61 torch load model dir mode
  • 使用opencv进行车牌提取及识别

    商业合作可联系 xff1a 547691062 64 qq com 目录 1车牌提取过程 1 1车辆图像获取1 2车牌定位1 3车牌字符分割2车牌提取 2 1灰度化2 2Candy边缘检测2 3形态学 xff08 膨胀腐蚀 xff09 处理
  • python 爬虫禁止访问解决方法(403)

    1 增加Header2 代理IP3 终极方法4 实例练习 5 更多思考 在上一篇博客中说到 xff0c 程序使用一段时间后会遇到HTTP Error 403 Forbidden错误 因为在短时间内直接使用Get获取大量数据 xff0c 会被

随机推荐

  • C++多线程编程

    c 43 43 11 之后有了标准的线程库 xff1a C 43 43 11发布之前 xff0c C 43 43 并没有对多线程编程的专门支持 xff0c C 43 43 11通过标准库引入了对多线程的支持 xff0c 大大方便了程序员的工
  • TensorFlow车牌识别完整版(含车牌数据集)

    在之前发布的一篇博文 MNIST数据集实现车牌识别 初步演示版 中 xff0c 我们演示了如何使用TensorFlow进行车牌识别 xff0c 但是 xff0c 当时采用的数据集是MNIST数字手写体 xff0c 只能分类0 9共10个数字
  • 混合精度训练

    MIXED PRECISION TRAINING https arxiv org pdf 1710 03740 pdf 论文概述 nvidia的Pascal和Volta系列显卡除了支持标准的单精度计算外 xff0c 也支持了低精度的计算 x
  • LDA-原理解析

    前言 在之前的一篇博客机器学习中的数学 7 PCA的数学原理中深入讲解了 xff0c PCA的数学原理 谈到PCA就不得不谈LDA xff0c 他们就像是一对孪生兄弟 xff0c 总是被人们放在一起学习 xff0c 比较 这这篇博客中我们就
  • Linux下配置使用VNC

    1 在Linux下配置使用VNC 1 1 VNC简介 VNC xff08 Virtual Network Computing xff0c 虚拟网络计算机 xff09 是一种可以对远程计算机进行远程控制的软件 xff0c 支持linux远程桌
  • 双目测距原理

    双目测距基本原理 xff1a 双目测距实际操作分4个步骤 xff1a 相机标定 双目校正 双目匹配 计算深度信息 相机标定 xff1a 摄像头由于光学透镜的特性使得成像存在着径向畸变 xff0c 可由三个参数k1 k2 k3确定 xff1b
  • openstack虚拟机无法启动的一次排错经历

    如上图所示 xff0c 虚拟机卡在这个界面并且无法启动 一般的虚拟机排错方式 xff1a 1 查找虚拟机宿主机的以下日志排查是否有报错的关键字 span class hljs built in var span span class hlj
  • 给自己时间沉淀下来

    像很多学长学姐当初一样 xff0c 我也到了繁忙的大四 这个尴尬的时间 xff0c 要选择 xff0c 要放弃 开始实习 xff0c 去窥探一下外面的世界 经过一个月的测试工作 xff0c 开始发现自己与别人的差距还是很大 再继续试水 xf
  • ROS学习(22)TF变换

    文章目录 前言一 TF功能包二 TF工具1 tf monitor2 tf echo3 static transform publisher4 view frames 三 乌龟例程中的TF四 乌龟跟随例程代码实现1 创建TF广播器2 创建TF
  • C# winform 窗体缩放问题处理

    一 问题 xff1a 本身窗体在设计器显示没有问题 xff0c 但运行时窗口却被缩放失真 xff1a 二 解决方法 xff1a 修改项目的配置文件 xff0c 使项目运行时自动检测屏幕分辨率 xff0c 在高分辨率屏幕禁用系统缩放 xff0
  • strlen与sizeof计算char* 与char数组

    sizeof 可以计算所有类型 xff0c strlen 仅计算字符串 xff0c 至于这二者的详细区别可以看其他文章 char a char b 5 sizeof a 61 8 64位系统 xff0c 8代表的是指针的大小 xff0c 指
  • MySQL的not null default

    建表语句每行末尾的NOT NULL DEFAUTL 含义 该句的含义是 xff0c 该字段不能为null xff0c 并且设置如果插入数据的时候不设置该字段的值的时候使用的默认值 insert操作且不给该字段插值的时候 xff0c 数据库判
  • eclipse 中 中文字符变小的解决方法

    前言 xff1a 装了新版的eclipse后发现 英文代码部分正常 xff0c 但是但凡有中文的地方中文字符变小了 xff0c 若调整字体大小 xff0c 英文就更大了 xff0c 总归中英文大小不一致 推荐解决方法 xff1a 打开 ec
  • LINUX/AIX下文本DOS格式与UNIX格式互转

    LINUX AIX下文本DOS格式与UNIX格式互转 一 文本换行符简介 n 换行 newline LF LineFeed 0x0D r 回车 return CR CarrageReturn 0x0A windows dos r n uni
  • STM32F103用hal库使用DMA+串口空闲中断接收数据

    简介 xff1a 出现空闲标志时 xff0c 认为一帧报文发送完毕 xff0c 进行报文分析 xff0c 比普通的串口中断效率高很多 xff01 用到的工具 xff1a CubeMX xff0c Keil5 芯片 xff1a STM32F1
  • AIX页面空间管理

    一 页面空间相关概念及设计规则 系统中的物理内存是非常有限的 xff0c 因此大多数OS都采用了虚拟内存技术 在AIX系统中也使用分页的存储方式管理存储器 xff0c 并将虚拟内存称为页面空间 Paging space 页面空间 xff1a
  • C/C++中的double类型四舍五入

    一 前言 最近 xff0c 项目中需要对金额进行四舍五入运算 本身系统中全部使用长整型 long or long long xff0c 数据库中使用decimal xff0c 从而防止double类型的精度缺失情况以及数据库中小数点后几位的
  • CAS实现SSO单点登录-CAS Server搭建

    最近公司连续接了三四个单点登录集成的项目 xff0c 由我们公司提供CAS Server端的 xff0c 也有需要我们把Client与其他公司提供的Server端对接的 xff0c 我负责把我们公司的一个Client与另外一个公司提供的Se
  • 从高考到程序员:我的程序探险之旅

    就在今天下午 xff0c 湖南省教育考试院公布了 2017 年湖南省普通高等学校招生全国统一考试的卷面成绩 xff0c 我的微信也瞬间被各种分段统计表和喜报刷屏 xff0c 每年的这个时候总是几家欢喜几家愁 六年前的 6 月 25 日 xf
  • MatconvNet+VS2015+Matlab2018a+CUDA9+cudnn7:在matlab上搞深度学习,安装环境时遇到的大坑!

    事情发生的背景 作为刚入职的深度学习实习生 xff0c 入职第一天 xff0c 我领完电脑 xff0c 刚装完电脑 xff0c 分配好公司的ip xff0c 连chrome都还没来得及安装 xff0c 就接到任务 xff0c 需要实现给定的