【转】Caffe初试(八)Blob,Layer和Net以及对应配置文件的编写
深度网络(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以及对应配置文件的编写相关推荐
- Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写
深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blob ...
- (Caffe)基本类Blob,Layer,Net(一)
本文地址:http://blog.csdn.net/mounty_fsc/article/details/51085654 Caffe中,Blob.Layer,Net,Solver是最为核心的类,下面 ...
- caffe源码分析:layer.hpp分析
文件路径:caffe-master_github/include/caffe/ Backward函数: template <typename Dtype> inline void Laye ...
- caffe源码分析-layer
本文主要分析caffe layer层,主要内容如下: 从整体上说明下caffe的layer层的类别,以及作用 通过proto定义与类Layer简要说明下Layer的核心成员变量; Layer类的核心成 ...
- caffe中的softmax layer
在caffe中的lenet实现最后一层是softmax layer,输出分类的结果,下面就简单介绍一下softmax回归. 1,首先,在caffe中,softmax layer输出的是原始的输入在每一 ...
- Caffe源码中layer文件分析
Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/layer.hpp文件的内 ...
- 剖析Caffe源码之Layer
目录 Layer介绍 Layer分析 LayerParameter Class Layer Layer派生类 Layer源码 Layer构造函数 SetUp函数 Forward函数 Backward函 ...
- 多线程 python layer_在Caffe中加Python Layer的方法
Author: Zongwei Zhou | 周纵苇 Weibo: @MrGiovanni Email: zongweiz@asu.edu Acknowledgement: Md Rahman Sid ...
- [Python人工智能] 八.卷积神经网络CNN原理详解及TensorFlow编写CNN
从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章介绍了什么是过拟合,并采用droput解决神经网络中过拟合的问题,以TensorFlow和sklearn的lo ...
- caffe网络模型各层详解(中文版)
caffe网络模型各层详解(中文版) 参考网址:https://blog.csdn.net/qq_34220460/article/details/79872830 一.数据层及参数 要运行caffe ...
最新文章
- makefile清除目标文件的规则
- python开发一个彩票系统_[宜配屋]听图阁
- Netty 高性能特性
- P2P技术如何拯救一家直播网站
- oracle clearing,ORACLE DBA常用命令集锦(2)
- Java消息中间件--JMS规范
- 数据时代总结思维导图模板分享及绘制技巧
- STM系列单片机中文参考手册下载方法
- 【OpenStack】OpenStack系列5之Cinder详解
- [AutoSAR]NXP HS12(X) AUTOSAR MCAL编译一下
- Springboot+ Mybatis搭建学习
- 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别(带面板)【含Matlab源码 1651期】
- 车路协同应用场景分析
- 山地车中轴进水表现_你知道吗?中轴拧错方向可能会毁了车架!
- 人工智能,机器学习, 深度学习框架图
- 操作系统-逻辑地址转换为物理地址Java实现
- 淘宝自动回复机器人配置手册——目前2018年淘宝主流自动回复软件一览
- linux物料管理,SAP-PM 工具管理篇之出入库
- 解析微信小程序真正的作用
- 【CF 513F2】
热门文章
- netty冲突 play sbt_播放Cassandra Netty Server空指针异常-问答-阿里云开发者社区-阿里云...
- python求一组数的最大值和平均值_在python中找到一列数据的最小最大值和平均值...
- python __set__ __get___python __get__ __set__
- 双系统ubuntu无法进入_win10下安装ubuntu双系统
- 蚌埠计算机学校招生,蚌埠高级技工学校招生政策
- vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
- python tkmessagebox_在python中关闭tkmessagebox一段时间后
- PHP面试常考内容之面向对象(3) 1
- centos7中使用LVM管理磁盘和挂载磁盘
- 为何大富连续三天彻夜未眠!