caffe源码学习:Blobs

caffe 的blob是caffe框架的核心,主要是由number*channel*weight*high组成的一个四维的tensor。首先是blob.hp定义的头文件。

上图表示的是blob的两个构造函数,现版本的caffe第一个已经过时。

上图表示的是reshape函数,这个函数主要是在调用Layer::Reshape或者 Layer::Forward函数的时候被触发用来改变blob的维度,以适应当前的计算。

上面的四个函数首先介绍的CanonicalAxisIndex函数,这个函数主要是对输入的维度进行变化,他允许输入的维度是负数,在做过输入检查之后,然后在判断如果axis小于0的话,加上num_axes( )就可以。num_axes(  )返回blob元的维度。count(  )  主要是返回blob中元素的个数,例如fc曾有4096个神经元,另外coun还有两个版本,只不过参数不同,是按照维度进行索引。inline int count(int start_axis) const和inline int count(int start_axis, int end_axis) const。

计算在四维的tensor中给定元素位置取出对应的数值。

上图主要是blob之间数据的拷贝copy_diff为true表示拷贝的是梯度,否则拷贝的是data。reshape为true,表示可以直接转换为其他形状的blob,否则必须经过pre-reshape。红色箭头表示拷贝不同的内容。

上面就是简单书取出数据。后面的一些方法的具体实现实在CPP中。

caffe源码学习:Blobs相关推荐

  1. caffe源码学习:softmaxWithLoss前向计算

    caffe源码学习:softmaxWithLoss 在caffe中softmaxwithLoss是由两部分组成,softmax+Loss组成,其实主要就是为了caffe框架的可扩展性. 表达式(1)是 ...

  2. caffe源码学习——1.熟悉protobuf,会读caffe.proto

    要想学习caffe源码,首当其冲的要阅读的,就是caffe.proto这个文件.它定义了caffe中用到的许多结构化数据. caffe采用了Protocol Buffers的数据格式. 那么,Prot ...

  3. CAFFE源码学习之优化方法solver

    一.前言 solver就是来计算损失函数最小化的优化方法,在caffe中,提供了六种不同的优化方法: (1)SGD: (2)AdaGrad: (3)AdaDelta: (4)Adam: (5)RMSP ...

  4. 深度学习(八)caffe源码学习-未完待续

    本文主要详细讲解caffe的直接调用方法. 一.训练相关 #!/usr/bin/env sh TOOLS=../cafferead/build/tools $TOOLS/caffe train --s ...

  5. Caffe 源码 - BatchNorm 层与 Scale 层

    batch norm layer & scale layer 简述 Batch Normalization 论文给出的计算: 前向计算: 后向计算: BatchNorm 主要做了两部分: [1 ...

  6. 深度学习框架Caffe源码解析

    作者:薛云峰(https://github.com/HolidayXue),主要从事视频图像算法的研究, 本文来源微信公众号:深度学习大讲堂.  原文:深度学习框架Caffe源码解析  欢迎技术投稿. ...

  7. caffe源码c++学习笔记

    转载自:深度学习(七)caffe源码c++学习笔记 - hjimce的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/hjimce/article/details/ ...

  8. 深度学习(七)caffe源码c++学习笔记

    caffe源码c++学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/48933845 作者:hjimce 一.预测分类 最近几天为了希望深入 ...

  9. caffe源码深入学习6:超级详细的im2col绘图解析,分析caffe卷积操作的底层实现

       在先前的两篇博客中,笔者详细解析了caffe卷积层的定义与实现,可是在conv_layer.cpp与base_conv_layer.cpp中,卷积操作的实现仍然被隐藏,通过im2col_cpu函 ...

  10. Caffe源码中Net文件分析

    Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/net.hpp文件的内容: ...

最新文章

  1. Server Error: 0×80070543,无法取得服务器的状态(role 和 features)
  2. 有序的两个数组在满足其中一个数组的所有数都小于另外一个数组的情况下的整体的中位数
  3. Gradle初探(一):创建一个Gradle项目
  4. 微软公司服务器主题软件,微软重大IT升级 七款产品巩固软件帝国
  5. 网站高并发优化性能调优总结
  6. 如何在Raspberry Pi上安装Fedora 25
  7. 表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 关系
  8. html5+css3方式实现mobie app的一些瓶颈
  9. 从苹果店员到机器学习工程师:学习AI,我是这样起步的
  10. 电源大师课笔记 3.5
  11. 【工具】Get Data-获取论文图片中数据的工具
  12. 计算机桌面鼠标锁定了怎么办,笔记本鼠标锁住怎么办
  13. linux文件属性全解,Linux文件属性详细图解
  14. 2018-3-28 摩尔定律
  15. .NET 2.0 调用FFMPEG
  16. Work Stealing Pool线程池
  17. 《环太平洋》(pacific rim)观后感
  18. 走进游戏中的美术:游戏美术风格介绍
  19. 黑苹果0x0501_黑苹果原版安装从零开始---3-clover配置篇
  20. OracleClient

热门文章

  1. 分析力学复习笔记(更新中)
  2. 华为服务器管理口在哪个位置,华为服务器默认管理口地址吗
  3. CSS 权威指南 读书笔记(五)
  4. C语言递归函数 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
  5. Vue官网下载Vue.js和Vue.min.js
  6. hourglass网络详解+pytorch代码
  7. cocos2d-js 接入anysdk
  8. HSL、RGB颜色转换
  9. 2022.3月份工作记录【日记】
  10. 合计函数(统计函数)