【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置成功后的第一次训练过程记录<二>

标签:【神经网络与深度学习】 【CUDA开发】 【VS开发】


紧着上一篇,我在windows上备份了三个版本的Caffe库以及visual studio 13的编译工程,主要当时是一步一步来的,想着先是only cpu,然后是支持cuda,最后是并入cuDNN。当我意识到程序要支持在没有GPU的设备上运行时,需要有不同的选择。这里主要记录关于三种不同的配置生成的库的差别及其在不同场景下的使用说明。


刚开始觉得,在部署配置的时候只需要定义如下的内容部分进行修改即可:

#ifdef CPU_ONLY
Caffe::set_mode(Caffe::CPU);
#else
Caffe::set_mode(Caffe::GPU);
#endif

即如果定义了CPU_ONLY,那么就将caffe的mode设置为CPU,否则设置为GPU,这就能够保证应该能在没有配置GPU的电脑上跑了!

可是中间出现了一个问题,就是运行的时候总出现一个问题,我就以为这个CAFFE+CUDA+cdDNN的库可能不支持CPU,于是就去尝试着将另外两个备份的CAFFE库也放入了D盘的第三方库中,并修改如下:

LIBS += D:\Caffe_3rdparty\OnlyCPULib\Release\libcaffe.lib

结果还是爆出同样的错误,于是开始配置在onlycpu的编译工程中添加classification,试验一下能不能进行分类,结果很显然可以。我就开始怀疑Qt版本与visual studio 2013版本究竟有哪些区别,最后是在Qt的工程中通过debug模式,找到了爆出错误的lib居然是libopenblas,我忽然意识到这两个版本使用的库文件是有一定的区别的,因为我当时调Qt的独立第三方库的时候用了别的版本的lib,因为GPU跑的时候没出现问题,所以就没有让两者保持完全一致,没料到居然在这里出现了问题。于是将Visual studio 2013中使用的openblas库放入了第三方库中,并修改.pro中的LIBS:

LIBS += D:\Caffe_3rdparty\lib\libopenblas.dll.a

再次运行就没有出现错误!真的让我浪费了好几个小时!


现在已经验证了Caffe+CUDA+cuDNN的库也是可以只在CPU上跑的,而onlyCPU版本是支持CPU而不支持GPU的,而且从我的观察上看,三个版本的libcaffe.lib的大小也是:

onlyCPU(306MB)<CPU+CUDA(335MB)<CPU+CUDA+cuDNN(371MB)

这其实也就说明的是一层包含一层吧!向下都应该保持兼容性的!


通过上面的分析,在部署深度神经网络进行分类识别时,只需要使用最后一版本即可!


2016-9-16 19:24

张朋艺 pyZhangBIT2010@126.com

【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程的更多相关文章

  1. 【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试

    [神经网络与深度学习][CUDA开发]caffe-windows win32下的编译尝试 标签:[神经网络与深度学习] [CUDA开发] 主要是在开发Qt的应用程序时,需要的是有一个使用的库文件也只是 ...

  2. 【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置过程说明

    [神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置过程说明 标签:[Qt开发] 说明:这个工具在Windows上的配置真的是让我纠结万分,大部分 ...

  3. 【神经网络与深度学习】【Matlab开发】caffe-windows使能Matlab2015b接口

    [神经网络与深度学习][Matlab开发]caffe-windows使能Matlab2015b接口 标签:[神经网络与深度学习] [Matlab开发] 主要是想全部来一次,所以使能了Matlab的接口 ...

  4. 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程

    [神经网络与深度学习][python开发]caffe-windows使能python接口使用draw_net.py绘制网络结构图过程 标签:[神经网络与深度学习] [python开发] 主要是想用py ...

  5. 【神经网络与深度学习】【VS开发】【CUDA开发】VS2013 配置CUDNN V4 DEMO

    VS2013 配置CUDNN V4 DEMO 众所周知,当前主流深度学习的实现中调用的底层API都是cudnn,自己做项目需要开发深度学习模块时,也需要调用cudnn库,因此熟悉cudnn库是很有必要 ...

  6. 【神经网络与深度学习】【CUDA开发】服务器(多GPU)caffe安装和编译

    一. 前提 多GPU交互在神经网络是常见的,所以在安装caffe之前需要安装NCCL,来保证多GPU之间的相互交流.  多GPU,这里指的是2个及2个以上英伟达显卡,而不是笔记本中的集显和独显. 二. ...

  7. 【神经网络与深度学习】【Python开发】Caffe配置 windows下怎么安装protobuf for python

    首先从google上下载protobuf-2.5.0.zip和protoc-2.5.0-win32.zip,然后把protoc-2.5.0-win32.zip里的protoc.exe放到protobu ...

  8. 【神经网络与深度学习】【CUDA开发】【VS开发】Microsoft官方移植了Caffe配置过程说明

    想在Windows平台使用Caffe,吭哧吭哧下载了半天第三方库,后来忽然发现Microsoft官方移植了Caffe,配置起来简直太省心了- 1. 从Microsoft官方Github上下载Caffe ...

  9. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

随机推荐

  1. graphviz 决策树绘图中文乱码解决方法

    1.修改graphviz配置文件 <dir>C:\WINDOWS\Fonts</dir> 更改为 <dir>~/.fonts</dir> 2.将决策树d ...

  2. mybatis之联表查询

    今天碰到了一个问题,就是要在三张表里面各取一部分数据然后组成一个list传到前台页面显示.但是并不想在后台做太多判断,(因为涉及到for循环)会拉慢运行速度.正好用的框架是spring+springM ...

  3. C# WinForm捕获全局异常(捕获未处理的异常)

    static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...

  4. qt5--表格控件QTableWidget

    需要    #include <QTableWidget>      #include <QTableWidgetItem> #include "win.h" ...

  5. vue项目搭建步骤以及一些安装依赖包

    一. vue-cli初始化1. 全局安装 vue-clinpm install --global vue-cli2. 创建一个基于 webpack 模板的新项目vue init webpack my- ...

  6. 有时间看看这个方法 会不会 避免 xss

    Server.HtmlEncode  能将字符串原样输出 包括html标签

  7. 让IE8一下兼容CSS3选择器

    来自英国的网页开发工程师Keith Clark 开发了一个JavaScript方案来使IE支持CSS3选择器.该脚本支持从IE5到IE8的各个版本. 首先,您需要下载DOMAssistant脚本和ie ...

  8. 【HDOJ5447】Good Numbers(数论)

    题意: 思路:From https://blog.csdn.net/qq_36553623/article/details/76683438 大概就是把1e6里面的质因子能除的都除光之后借助两者gcd ...

  9. Android重写HorizontalScrollView模仿ViewPager效果

    Android提供的ViewPager类太复杂,有时候没有必要使用,所以重写一个HorizontalScrollView来实现类似的效果,也可以当做Gallery来用 思路很简单,就是重写onTouc ...

  10. QTableWidgetItem QTreeWidgwtItem 复选框的取消显示方法

    思路: QTableWidgetItem   :item->setData(Qt::CheckStateRole,QVariant()); QTreeWidgwtItem  :item-> ...