深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成。Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型。它将所有的信息数据定义为blobs,从而进行便利的操作和通讯。Blob是caffe框架中一种标准的数组,一种统一的内存接口,它详细描述了信息是如何存储的,以及如何在层之间通讯的。

1、blob

Blobs封装了运行时的数据信息,提供了CPU和GPU的同步。从数学上来说,Blob就是一个N维数组。它是caffe中的数据基本单位,就像matlab中以矩阵为基本操作对象一样。只是矩阵是二维的,而Blob是N维的。N可以是2,3,4等等。对于图片数据来说,Blob可以表示为(N*C*H*W)这样一个4D数组。其中N表示图片的数量,C表示图片的通道数,H和W分别表示图片的高度和宽度。当然,除了图片数据,Blob也可以用于非图片数据。比如传统的多层感知机,就是比较简单的全连接网络,用2D的Blob,调用innerProduct层来计算就可以了。

2、layer

层是网络模型的组成要素和计算基本单位。层的类型比较多,如Data,Convolution,Pooling,ReLUmSoftmax-loss,Accuracy等,一个层的定义大致如下图:

从bottom进行数据的输入,计算后,通过top进行输出。图中的黄色多边形表示输入输出的数据,蓝色矩形表示层。

每一种类型的层都定义为三种关键的计算:setup,forward and backword

setup:层的建立和初始化,以及在整个模型中的连接初始化。

forward:从bottom得到输入数据,进行计算,并将计算结果送到top,进行输出。

backward:从层的输出端top得到数据的梯度,计算当前层的梯度,并将计算结果送到bottom,向前传递。

3、Net

就像搭积木一样,一个net由多个layer组合而成。

现给出一个简单的2层神经网络的模型定义(加上loss层就变成三层了),先给出这个网络拓扑。

第一层:name为mnist,type为Data,没有输入(bottom),只有两个输出(top),一个为data,一个为label

第二层:name为ip,type为InnerProduct,输入数据data,输出数据ip

第三层:name为loss,type为SoftmaxWithLoss,有两个输入,一个为ip,一个为label,有一个输出loss,没有画出来。

对应的配置文件prototxt就可以这样写:

name: "LogReg"
layer {  name: "mnist"  type: "Data"  top: "data"  top: "label"  data_param {  source: "input_leveldb"  batch_size: 64  }
}
layer {  name: "ip"  type: "InnerProduct"  bottom: "data"  top: "ip"  inner_product_param {  num_output: 2  }
}
layer {  name: "loss"  type: "SoftmaxWithLoss"  bottom: "ip"  bottom: "label"  top: "loss"
}  

第一行将这个模型取名为LogReg,然后是三个layer的定义,参数都比较简单,只列出必须的参数。

【转】Caffe初试(八)Blob,Layer和Net以及对应配置文件的编写相关推荐

  1. Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写

    深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blob ...

  2. (Caffe)基本类Blob,Layer,Net(一)

    本文地址:http://blog.csdn.net/mounty_fsc/article/details/51085654 Caffe中,Blob.Layer,Net,Solver是最为核心的类,下面 ...

  3. caffe源码分析:layer.hpp分析

    文件路径:caffe-master_github/include/caffe/ Backward函数: template <typename Dtype> inline void Laye ...

  4. caffe源码分析-layer

    本文主要分析caffe layer层,主要内容如下: 从整体上说明下caffe的layer层的类别,以及作用 通过proto定义与类Layer简要说明下Layer的核心成员变量; Layer类的核心成 ...

  5. caffe中的softmax layer

    在caffe中的lenet实现最后一层是softmax layer,输出分类的结果,下面就简单介绍一下softmax回归. 1,首先,在caffe中,softmax layer输出的是原始的输入在每一 ...

  6. Caffe源码中layer文件分析

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

  7. 剖析Caffe源码之Layer

    目录 Layer介绍 Layer分析 LayerParameter Class Layer Layer派生类 Layer源码 Layer构造函数 SetUp函数 Forward函数 Backward函 ...

  8. 多线程 python layer_在Caffe中加Python Layer的方法

    Author: Zongwei Zhou | 周纵苇 Weibo: @MrGiovanni Email: zongweiz@asu.edu Acknowledgement: Md Rahman Sid ...

  9. [Python人工智能] 八.卷积神经网络CNN原理详解及TensorFlow编写CNN

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章介绍了什么是过拟合,并采用droput解决神经网络中过拟合的问题,以TensorFlow和sklearn的lo ...

  10. caffe网络模型各层详解(中文版)

    caffe网络模型各层详解(中文版) 参考网址:https://blog.csdn.net/qq_34220460/article/details/79872830 一.数据层及参数 要运行caffe ...

最新文章

  1. makefile清除目标文件的规则
  2. python开发一个彩票系统_[宜配屋]听图阁
  3. Netty 高性能特性
  4. P2P技术如何拯救一家直播网站
  5. oracle clearing,ORACLE DBA常用命令集锦(2)
  6. Java消息中间件--JMS规范
  7. 数据时代总结思维导图模板分享及绘制技巧
  8. STM系列单片机中文参考手册下载方法
  9. 【OpenStack】OpenStack系列5之Cinder详解
  10. [AutoSAR]NXP HS12(X) AUTOSAR MCAL编译一下
  11. Springboot+ Mybatis搭建学习
  12. 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别(带面板)【含Matlab源码 1651期】
  13. 车路协同应用场景分析
  14. 山地车中轴进水表现_你知道吗?中轴拧错方向可能会毁了车架!
  15. 人工智能,机器学习, 深度学习框架图
  16. 操作系统-逻辑地址转换为物理地址Java实现
  17. 淘宝自动回复机器人配置手册——目前2018年淘宝主流自动回复软件一览
  18. linux物料管理,SAP-PM 工具管理篇之出入库
  19. 解析微信小程序真正的作用
  20. 【CF 513F2】

热门文章

  1. netty冲突 play sbt_播放Cassandra Netty Server空指针异常-问答-阿里云开发者社区-阿里云...
  2. python求一组数的最大值和平均值_在python中找到一列数据的最小最大值和平均值...
  3. python __set__ __get___python __get__ __set__
  4. 双系统ubuntu无法进入_win10下安装ubuntu双系统
  5. 蚌埠计算机学校招生,蚌埠高级技工学校招生政策
  6. vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
  7. python tkmessagebox_在python中关闭tkmessagebox一段时间后
  8. PHP面试常考内容之面向对象(3) 1
  9. centos7中使用LVM管理磁盘和挂载磁盘
  10. 为何大富连续三天彻夜未眠!