Caffe源码解析1:Blob】的更多相关文章

转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 首先看到的是Blob这个类,Blob是作为Caffe中数据流通的一个基本类,网络各层之间的数据是通过Blob来传递的.这里整个代码是非常规范的,基本上条件编译,命名空间,模板类,各种不太经常看到的关键字如exlicit,inline等等. 首先提一下explicit关键字的作用是禁止单参数构造函数的隐式转换,具体含义谷歌即可.还有inline的作用,inilin…
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ Pooling 层一般在网络中是跟在Conv卷积层之后,做采样操作,其实是为了进一步缩小feature map,同时也能增大神经元的视野.在Caffe中,pooling层属于vision_layer的一部分,其相关的定义也在vision_layer.hpp的头文件中.Pooling层的相关操作比较少,在Caffe的自带模式下只有Max pooling和Aver…
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ NeuronLayer,顾名思义这里就是神经元,激活函数的相应层.我们知道在blob进入激活函数之前和之后他的size是不会变的,而且激活值也就是输出 \(y\) 只依赖于相应的输入 \(x\).在Caffe里面所有的layer的实现都放在src文件夹下的layer文件夹中,基本上很多文章里应用到的layer类型它都有cpu和cuda的实现. 在caffe里面…
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ Vision_layer里面主要是包括了一些关于一些视觉上的操作,比如卷积.反卷积.池化等等.这里的类跟data layer一样好很多种继承关系.主要包括了这几个类,其中CuDNN分别是CUDA版本,这里先不讨论,在这里先讨论ConvolutionLayer BaseConvolutionLayer ConvolutionLaye DeconvolutionL…
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ data_layer应该是网络的最底层,主要是将数据送给blob进入到net中,在data_layer中存在多个跟data_layer相关的类 BaseDataLayer BasePrefetchingDataLayer DataLayer DummyDataLayer HDF5DataLayer HDF5OutputLayer ImageDataLayer…
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ layer这个类可以说是里面最终的一个基本类了,深度网络呢就是一层一层的layer,相互之间通过blob传输数据连接起来.首先layer必须要实现一个forward function,前递函数当然功能可以自己定义啦,在forward中呢他会从input也就是Layer的bottom,对了caffe里面网络的前一层是叫bottom的,从bottom中获取blob…
转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang loves baiyan/ 看到SyncedMem就知道,这是在做内存同步的操作.这类个类的代码比较少,但是作用是非常明显的.文件对应着syncedmem.hpp,着syncedmem.cpp 首先是两个全局的内联函数.如果机器是支持GPU的并且安装了cuda,通过cudaMallocHost分配的host memory将会被pinned,这里我谷歌了一下,pinned的意思就是内存不会被…
转自:http://blog.csdn.net/qq_14975217/article/details/51524042 Blob:4个维度 n x c x h x w: bottom[0] .bottom[1]代表该层有几个输入. bottom[0]->count(): 输入中,元素的总维数(个数) bottom[0]->nums(): 输入中,块(block)的个数,该参数还对应batch_size,即同时输入了几张图片 c:是卷积核(filter)的个数,每个卷积核产生一个通道的输出:在…
Blob:4个维度 n x c x h x w: bottom[0] .bottom[1]代表该层有几个输入. bottom[0]->count(): 输入中,元素的总维数(个数) bottom[0]->nums(): 输入中,块(block)的个数,该参数还对应batch_size,即同时输入了几张图片 c:是卷积核(filter)的个数,每个卷积核产生一个通道的输出:在输入层,c直接就是图像的通道数: 还有一个变量,dim;:每个块的维度(元素个数) 形象化: | xxxxx | xxxx…
http://blog.csdn.net/lanxuecc/article/details/53186613…
参考网址:https://www.cnblogs.com/louyihang-loves-baiyan/p/5149628.html 1.caffe代码层次熟悉blob,layer,net,solver几类,blob:作为数据输出的媒介,无论是网络权重参数,还是输入数据,都是转化为blob数据结构来存储.layer:作为网络的基础单元,神经网络中层与层间的数据节点.前后传递都在数据结构中被实现,net:作为网络的整体骨架,决定了网络中的层次数目以及各个层的类别solver:作为网络的求解策略,涉…
分析caffe源码,看首先看caffe.proto,是明智的选择.好吧,我不是创造者,只是搬运工. 原文地址:http://blog.csdn.net/qq_16055159/article/details/45115359 引言 要看caffe源码,我认为首先应该看的就是caffe.proto. 它位于-\src\caffe\proto目录下,在这个文件夹下还有一个.pb.cc和一个.pb.h文件,这两个文件都是由caffe.proto编译而来的. 在caffe.proto中定义了很多结构化数…
caffe目录: ├── build -> .build_release // make生成目录,生成各种可执行bin文件,直接调用入口: ├── cmake ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── data ├── distribute ├── docker ├── docs ├── examples //很多demo可以尝试使用: ├── include ├── INSTALL.md ├── LICENSE…
Caffe源码 Blob protected: shared_ptr<SyncedMemory> data_; shared_ptr<SyncedMemory> diff_; shared_ptr<SyncedMemory> shape_data_; vector<int> shape_; int count_; int capacity_; Blob的构造函数 Blob<Dtype>::Blob(const int num, const int…
写在前面 在对Tensorflow的后端源码进行了拆解(参见tensorflow源码解析系列文章索引)之后,很想跟其它深度学习框架的实现进行对比,根据框架的流行程度,先选择了Pytorch.Pytorch的后端核心是直接复用了Caffe2,因此本文针对Caffe2源码的core模块进行了简单拆解. 目录 数据存储与表示 storage tensor blob qtensor 操作 observer observable operator 操作求导 operator_schema context…
Solr DIH 源码解析 DataImportHandler.handleRequestBody()中的importer.runCmd(requestParams, sw) if (DataImporter.FULL_IMPORT_CMD.equals(command) || DataImporter.DELTA_IMPORT_CMD.equals(command) || IMPORT_CMD.equals(command)) { importer.maybeReloadConfigurati…
前言: 由于业务需要,接触caffe已经有接近半年,一直忙着阅读各种论文,重现大大小小的模型. 期间也总结过一些caffe源码学习笔记,断断续续,这次打算系统的记录一下caffe源码学习笔记,巩固一下C++,同时也梳理一下自己之前的理解. 正文: 我们先不看caffe的框架结构,先介绍一下caffe.proto,是google开源的一种数据交互格式--Google Protobuf,这种数据的格式,我们可以看到caffe.proto中内容: syntax = "proto2"; pac…
目录 写在前面 成员变量的含义及作用 构造与析构 内存同步管理 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 在Caffe源码理解1中介绍了Blob类,其中的数据成员有 shared_ptr<SyncedMemory> data_; shared_ptr<SyncedMemory> diff_; std::shared_ptr 是共享对象所有权的智能指针,当最后一个占有对象的shared_ptr被销毁或再赋值时,对象会被自动销毁并释放内存,见cp…
Gin框架源码解析 Gin框架是golang的一个常用的web框架,最近一个项目中需要使用到它,所以对这个框架进行了学习.gin包非常短小精悍,不过主要包含的路由,中间件,日志都有了.我们可以追着代码思考下,这个框架是如何一步一步过来的. 从http包说起 基本上现在的golang的web库都是从http上搭建起来,golang的http包的核心如下: func ListenAndServe(addr string, handler Handler) error { server := &Ser…
Caffe源码阅读(1) 全连接层 发表于 2014-09-15   |   今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cpp 主要是三个方法,setup,forward,backward setup 初始化网络参数,包括了w和b forward 前向传播的实现 backward 后向传播的实现 setup 主体的思路,作者的注释给的很清晰.主要是要…
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] [Mybatis 系列7-结合源码解析核心CRUD配置及用法] [Mybatis 系列6-结合源码解析节点配置objectFactory.databaseIdProvider.plugins.mappers] [Mybatis 系列5-结合源码解析TypeHandler] [Mybatis 系列4-…
Caffe源码(caffe version:09868ac , date: 2015.08.15)中的一些重要头文件如caffe.hpp.blob.hpp等或者外部调用Caffe库使用时,一般都会include<caffe/common.hpp>文件,下面分析此文件的内容: 1.      include的文件: boost中的智能指针头文件<boost/shared_ptr.hpp>,作用类似于C++11中的模板类shared_ptr,通过引用计数方式自动释放所指的对象,不用显示…
最近公司各种上线,所以回家略感疲惫就懒得写了,这次我准备把剩下的所有方法全部分析完,可能篇幅过长...那么废话不多说让我们进入正题. 没看过前几篇的可以猛戳这里: underscore.js源码解析(一) underscore.js源码解析(二) underscore.js源码解析(三) underscore.js源码解析(四) underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/undersc…
没看过前几篇的可以猛戳这里: underscore.js源码解析(一) underscore.js源码解析(二) underscore.js源码解析(三) underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3 _.pluck _.pluck = function(obj, key) { return _.map(ob…
最近工作比较忙,做不到每周两篇了,周末赶着写吧,上篇我针对一些方法进行了分析,今天继续. 没看过前两篇的可以猛戳这里: underscore.js源码解析(一) underscore.js源码解析(二) underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3 _.map/_.collect _.map = _.coll…
前几天我对underscore.js的整体结构做了分析,今天我将针对underscore封装的方法进行具体的分析,代码的一些解释都写在了注释里,那么废话不多说进入今天的正文. 没看过上一篇的可以猛戳这里:underscore.js源码解析(一) underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3 _.each _.…
原文地址:https://github.com/Rowandjj/my_awesome_blog/blob/master/fab_anlysis/README.md loatingActionButton源码解析 背景 FloatingActionButton(下文以fab代替)是android support design组件库中提供的一个视图控件,是material design设计中fab的官方实现. 此控件的官方介绍如下: Floating action buttons are used…
原文地址:https://github.com/Skykai521/AndroidSdkSourceAnalysis/blob/master/article/Scroller%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90.md Scroller源码解析 本文分析版本: Android API 22 1.简介 Android开发中,如果我们希望使一个View滑动的话,除了使用属性动画外.我们还可以使用系统提供给我们的两个类Scroller和OverScroller用来实现…
引言 本文接着上一篇语义分割丨PSPNet源码解析「网络训练」,继续介绍语义分割的测试阶段. 模型训练完成后,以什么样的策略来进行测试也非常重要. 一般来说模型测试分为单尺度single scale和多尺度multi scale,多尺度的结果一般比单尺度高.除此之外,其他细节比如是将整幅图送进网络,还是采用滑动窗口sliding window 每次取图的一部分送进网络这些也会影响测试结果.下面将基于代码进行阐述. 完整代码见:https://github.com/speedinghzl/pyto…
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第二篇   推断(测试)过程不使用RPN时代码运行流程 作者:Jiang Wu  原文见:https://home.cnblogs.com/u/deeplearning1314/ 原因:网上tensorflow版Faster RCNN代码解析较少(猜测是代码调用关系太复杂,没人愿意写),为便于交流学习,本人深入理解代码同时定期更新自己的理解,如有错误敬请指正.(吴疆   2018.7.4) 感谢:网上大神--…