大小:8.09M
更新时间:23-09-13
系统:Pc
Caffe的核心程序是用C++实现的,并提供了Python和Matlab的接口,也就是说你可以在python和matlab中调用caffe训练好的模型。并且caffe支持cpu和gpu的无缝切换,这一点在现在的大数据时代显得尤为重要。目前搞深度学习的人大部分都是在gpu上跑程序的,一个ImageNet数据集有上千万张图片,加上深度学习使用的模型层数又比较多,跑一个程序所花费的时间都是以天为单位计算的,若在cpu上跑,可能需要一周的时间,但在gpu上可能只需两三天就好了。
但是对于我们这些正常人来说,如果让我们在gpu上进行编程,恐怕都要傻眼了,这时caffe就提供了一个便捷的方式,可以让你忽略cpu和gpu的差别,仅仅一个参数就可以让你的模型在cpu和gpu之间自由切换,大大提升了各位童鞋‘发论文’的速度。(还有一个python工具包也可以让你方便的在cpu和gpu之间进行切换,那就是Theano了,本人最初正是因为只有python工具包才有支持gpu编程的功能,所以才弃matlab从python的)
Caffe的设计考虑了以下几个方面:
1、表示:模型和优化以纯文本的模式定义,而不是以代码模式;
2、速度:运算速度对于最先进模型和海量数据是至关重要的;
3、模块化:新的任务和配置要求框架具有灵活性和扩展性;
4、开放性:科研和应用过程需要公共的代码、可参考的模型和可再现性;
5、社区:通过共同讨论和具体协议共同开发这个项目,学术研究、起步阶段的原型和工业应用可以共享各自的力量。
拥有以上诸多优势,经过两年多的版本迭代,Caffe框架已经在学术界和工业界得到了广泛的认可。
那么是什么原因促使caffe的运行速度比其它深度学习框架的运行速度快呢?个人认为有以下几点:
1、数据存储:
Caffe生成的数据分为2种格式:Lmdb和Leveldb
它们都是键/值对嵌入式数据库管理系统编程库。
虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。
因此lmdb取代了leveldb成为Caffe默认的数据集生成格式。(这点得吐槽下了,没空的自行跳过此段。之前用的是实验室服务器上安装的老版本的caffe,在运行MNIST和CIFAR-10的例子时,caffe官网教程上的还是生成*_leveldb格式的数据,但当我几天后跑ImageNet实例时,提示我找不到$CAFFE_ROOT/build/tools/目录下的caffe文件,后来还是通过和网友的tools目录下的文件对比才发现,编译后生成的老版本的caffe比新版的少了一堆东西,只好重新编译新版本,编译过程中发现缺少lmdb,查资料才发现,caffe已经用lmdb取代了leveldb,而返回去看之前的MNIST和CIFAR-10实例教程,发现教程上也已经将leveldb的部分改成lmdb了。唉~,这更新速度也忒快了吧,还是提醒各位及时升级,有问题多看几遍官网教程)
2、数据传输
当数据在前向后向传输时,caffe采用blobs的形式对数据进行传递或处理,它是该框架采用的标准的存储接口。下面是百度百科上对blob的一段解释:BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库,caffe中的lmdb或leveldb)
在caffe中,blob是一个四位数组,不过在不同的场合,各维表示的意义不同
对于数据:Number*Channel*Height*Width
对于卷积权重:Output*Input*Height*Width
对于卷积偏置:Output*1*1*1
3、其它
c++的运行效率就不用多说了,暂时这些吧,如有新内容再补充了,也欢迎大家来补充……
介绍完caffe了,接下来就该安装caffe跑跑实例看看效果了
不过先说明下,本系列caffe学习笔记中,不涉及caffe的安装部分,如有此需求请移步他处。我用的是实验室的服务器,caffe是别人装的,本人没有root权限没有实际安装过,所以安装部分就无从奉告了~
1、硬件配置
参数规格
CPU 架构x86_64
系统内存8-32GB
CPU1
GPU 型号NVIDIA TITAN X
GPU1-2
2、服务器
参数规格
CPU 架构x86_64
系统内存32 GB
每节点的 CPU 数目1-2
GPU 型号
Tesla M40
Tesla P100
每节点的 GPU 数目1-4
3、软件配置
参数版本
操作系统Ubuntu 14.04
GPU 驱动程序367.27 或更新版本
CUDA 工具包8.0
cuDNN 库v5.1
Caffe在更新的 NVIDIA Pascal GPU 上运行的速度最高可提高65%,并能够跨单个节点中的多个 GPU 进行扩展。如今,您训练模型的时间可以从几天缩短到几个小时。
第1步:安装 CUDA
要结合使用 Caffe 和 NVIDIA GPU,步要安装CUDA 工具包。
第2步:安装 cuDNN
安装 CUDA 工具包后,下载适用于 Linux 的cuDNN v5.1 库(请注意,您将需要注册加速计算开发人员计划)。
下载后,解压缩文件并将其复制到 CUDA 工具包目录(此处假设在 /usr/local/cuda/ 中):
$ sudo tar -xvf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
第 3 步:安装依赖项
Caffe依赖于多个库,您应该从您系统的数据包管理器获得这些库。
在 Ubuntu 14.04 中,将使用以下命令安装必要的库:
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev git
$ sudo apt-get install --no-install-recommends libboost-all-dev
第4步:安装 NCCL
在多个 GPU 上运行 Caffe 需要使用 NVIDIA NCCL。可使用以下命令安装 NCCL:
$ git clone
$ cd nccl
$ sudo make install -j4
NCCL 库和文件头将安装在 /usr/local/lib 和 /usr/local/include 中。
第5步:安装 Caffe
我们建议安装 NVIDIA 发布的新版 Caffe,请访问获取新版本。截至发稿时,超级新版本为 0.15.9。
$ wget
$ tar -zxf v0.15.9.tar.gz
$ cd caffe-0.15.9
$ cp Makefile.config.example Makefile.config
在文本编辑器中打开新创建的 Makefile.config,然后进行以下更改:
取消对行 USE_CUDNN := 1 的注释。这可以启用 cuDNN 加速。
取消对行 USE_NCCL := 1 的注释。这可以启用在多个 GPU 上运行 Caffe 所需的 NCCL。
保存并关闭文件。现在,您可以编译 Caffe 了。
$ make all -j4
完成此命令后,您会在 build/tools/caffe 中获得 Caffe 二进制文件。
准备图像数据库
测试 Caffe 的训练性能需要使用图像数据库作为输入资源。Caffe 自带多个模型,可使用来自 ILSVRC12 挑战赛(“ImageNet”)的图像。原始图像文件可从 下载(您将需要开通帐户并同意其条款)。下载原始图像文件并解压到您的系统中后,请继续执行以下步骤。假设原始图像以如下方式存储在您的磁盘中:
/path/to/imagenet/train/n01440764/n01440764_10026.JPEG
/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG
第 6 步:下载辅助数据
$ ./data/ilsvrc12/get_ilsvrc_aux.sh
第 7 步:创建数据库在文本编辑器中打开文件 examples/imagenet/create_imagenet.sh,然后进行以下更改:
将变量 TRAIN_DATA_ROOT 和 VAL_DATA_ROOT 更改为您解压原始图像的路径。设置 RESIZE=true 以便在将图像添加到数据库之前将其调整到适当大小。
保存并关闭文件。现在,您可以使用以下命令创建图像数据库了:$ ./examples/imagenet/create_imagenet.sh
然后,使用以下命令创建所需的图像均值文件:
$ ./examples/imagenet/make_imagenet_mean.sh
同类热门
热门标签
网友评论0人参与,0条评论
最新排行
jquery easyui953Kv1.5 web前端开发肯定是少不了各种插件的,而这款jquery easyui就是许多的web开发者最喜欢用到的一个ui插件,它是基于jquery开发的,拥有丰富并且美观的UI界面,能够让开发者快速的打造出各种炫酷的web页面,非常不错,而且目前各项不足正
查看gamecreator中文版297.21Mv0.99091 game creator中文版是一款功能非常专业的可视化游戏制作工具,通过这款软件,用户不需要编程,只需要利用软件内置的相关素材,即可轻松创建出各种类型的2D游戏,比如回合制、Arpg、横版过关、战棋等等。软件的功能非常的强大,包含了自由的模板系统
查看SCM Manager客户端(源代码管理服务器)94.03Mv3.0.3官方版 SCM Manager官方版是一款专业的源代码管理服务器,该软件基于Java构建,支持跨平台,是您对源代码管理的最佳帮手,同时还提供了命令行供安装服务、卸载和重启服务,其初始化脚本供自动初始化相关的环境变量,无需手动配置,从web界面即可进行配置,
查看ViewStateDecoder(ViewState查看工具)9Kv2.2官方版 ViewStateDecoder 2是一款绿色免费,功能实用ViewState查看工具。它是一款.net程序员非常常用的编程解码工具,支持viewstate查看、解码、保存字符串信息等功能,同时可以查看的内容还是很多的,无论是XML还是TXT格式文
查看YZYZ菜鸟编程小助手3.4Mv1.1官方版 YZYZ菜鸟编程小助手是主要针对广大编程新手朋友们打造的一款小巧实用的编程辅助工具。主要为用户提供一些方便快捷的编程模块,如:POST调试,JSON解析,正则表达式和翻译编码等,主要帮助朋友们对编程基本理论和开发思路有一个明确了解,对于后期编程能力
查看APKSign(APK签名工具)292Kv1.0官方版Dodo APKSign是一款用来制作安卓ROM和APK签名软件,有时候我们下载完APK之后会遇见无法使用,当用户遇到apk无法使用,可能就是没签名,用户可以使用软件对apk进行签名,系统进行了安全限制,下载这款Dodo APKSign来对APK进行签名
查看