caffe源码分析-layer

本文主要分析caffe layer层,主要内容如下:

  1. 从整体上说明下caffe的layer层的类别,以及作用

  2. 通过proto定义与类Layer简要说明下Layer的核心成员变量;

  3. Layer类的核心成员函数


1. 类Layer overview

caffe中的Layer主要分为如下几个模块:

  1. 输入层Data Layers

Data Layers定义了caffe中网络的输入,依赖于高效的数据库,例如(LevelDB or LMDB)。并且可以对数据做预处理,例如mean subtraction, scaling, random cropping, mirroring。
常用的有:Input, ImageData.

  1. Vision Layers层(卷积相关)例如,卷积层Convolution Layer, 池化层Pooling Layer等

  2. 循环网络层Recurrent Layers 例如,LSTM, RNN等。

  3. Common Layers例如,Inner Product 全连接层,Dropout弃权层,等。

  4. Normalization Layers(归一化层)例如Local Response Normalization (LRN), Batch Normalization 。

  5. Activation / Neuron Layers(激活层),例如ReLU, Sigmoid等。

  6. Utility Layers, 例如Flatten, Reshape等。

  7. Loss Layers, 例如Sigmoid Cross-Entropy Loss, Sum-of-Squares / Euclidean等。

layer.hpp: 父类Layer,定义所有layer的基本接口。

data_layers.hpp: 继承自父类Layer,定义与输入数据操作相关的子Layer,例如DataLayer,HDF5DataLayer和ImageDataLayer等。

vision_layers.hpp: 继承自父类Layer,定义与特征表达相关的子Layer,例如ConvolutionLayer,PoolingLayer和LRNLayer等。

neuron_layers.hpp: 继承自父类Layer,定义与非线性变换相关的子Layer,例如ReLULayer,TanHLayer和SigmoidLayer等。

loss_layers.hpp: 继承自父类Layer,定义与输出误差计算相关的子Layer,例如EuclideanLossLayer,SoftmaxWithLossLayer和HingeLossLayer等。

common_layers.hpp: 继承自父类Layer,定义与中间结果数据变形、逐元素操作相关的子Layer,例如ConcatLayer,InnerProductLayer和SoftmaxLayer等。

layer_factory.hpp: Layer工厂模式类,负责维护现有可用layer和相应layer构造方法的映射表。

每个Layer根据自身需求的不同,会定义CPU或GPU版本的实现,例如ConvolutionLayer的CPU和GPU实现就定义在了两个文件中conv_layer.cpp, conv_layer.cu.


2. 通过proto定义与类Layer简要说明下Layer的核心成员变量

proto的LayerParameter核心参数如下,除了基础的参数外还有其他的继承类如:ConvolutionParameter额外参数。


// LayerParameter next available layer-specific ID: 145 (last added: crop_param)
message LayerParameter {
  optional string name = 1; // the layer name
  optional string type =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值