caffe源码阅读5-各种layer概述
2016-07-19 11:36
423 查看
工厂模式:一个工厂可以生产N种产品,那么就需要N种磨具。
因为从来没有玩过设计模式,而layer是采用工厂模式的,就临时看了一下,大概可以用上面的那一句话来描述吧。
基本可以说caffe中的所有层都是继承了layer类的,那么在caffe中,一共有哪些层呢?可以在caffe.proto中看到:
enum LayerType {
// "NONE" layer type is 0th enum element so that we don't cause confusion
// by defaulting to an existent LayerType (instead, should usually error if
// the type is unspecified).
NONE = 0;
ABSVAL = 35;
ACCURACY = 1;
ARGMAX = 30;
BNLL = 2;
CONCAT = 3;
CONTRASTIVE_LOSS = 37;
CONVOLUTION = 4;
DATA = 5;
DROPOUT = 6;
DUMMY_DATA = 32;
EUCLIDEAN_LOSS = 7;
ELTWISE = 25;
FLATTEN = 8;
HDF5_DATA = 9;
HDF5_OUTPUT = 10;
HINGE_LOSS = 28;
IM2COL = 11;
IMAGE_DATA = 12;
INFOGAIN_LOSS = 13;
INNER_PRODUCT = 14;
LRN = 15;
MEMORY_DATA = 29;
MULTINOMIAL_LOGISTIC_LOSS = 16;
MVN = 34;
POOLING = 17;
POWER = 26;
RELU = 18;
SIGMOID = 19;
SIGMOID_CROSS_ENTROPY_LOSS = 27;
SILENCE = 36;
SOFTMAX = 20;
SOFTMAX_LOSS = 21;
SPLIT = 22;
SLICE = 33;
TANH = 23;
WINDOW_DATA = 24;
THRESHOLD = 31;
}
哇,吓我一跳!这么多!!
一个个的来分析,这么多种层,都分别在什么地方呢?包括:
vision_layers.hpp:ConvolutionLayer类,CuDNNConvolutionLayer类,Im2colLayer类,LRNLayer类,PoolingLayer类,CuDNNPoolingLayer类;
neuron_layers.hpp:NeuronLayer类,AbsValLayer类,BNLLLayer类,DropoutLayer类,PowerLayer类,ReLULayer类,CuDNNReLULayer类,SigmoidLayer类,CuDNNSigmoidLayer类,TanHLayer类,CuDNNTanHLayer类,ThresholdLayer类;
common_layers.hpp:ArgMaxLayer类,ConcatLayer类,EltwiseLayer类,FlattenLayer类,InnerProductLayer类,MVNLayer类,SilenceLayer类,SoftmaxLayer类,CuDNNSoftmaxLayer类,SplitLayer类,SliceLayer类
data_layers.hpp:BaseDataLayer类,BasePrefetchingDataLayer类,DataLayer类,DummyDataLayer类,HDF5DataLayer类,HDF5OutputLayer类,ImageDataLayer类,MemoryDataLayer类,WindowDataLayer类,
loss_layers.hpp:AccuracyLayer类,LossLayer类,ContrastiveLossLayer类,EuclideanLossLayer类,HingeLossLayer类,InfogainLossLayer类,MultinomialLogisticLossLayer类,SigmoidCrossEntropyLossLayer类,SoftmaxWithLossLayer类。
虽然这里有这么多种层,其实我们可能只关心其中的某一些而已。另外还看到,其实只有少部分的层使用GPU,也就是带有CuDNN的那些层。
因为从来没有玩过设计模式,而layer是采用工厂模式的,就临时看了一下,大概可以用上面的那一句话来描述吧。
基本可以说caffe中的所有层都是继承了layer类的,那么在caffe中,一共有哪些层呢?可以在caffe.proto中看到:
enum LayerType {
// "NONE" layer type is 0th enum element so that we don't cause confusion
// by defaulting to an existent LayerType (instead, should usually error if
// the type is unspecified).
NONE = 0;
ABSVAL = 35;
ACCURACY = 1;
ARGMAX = 30;
BNLL = 2;
CONCAT = 3;
CONTRASTIVE_LOSS = 37;
CONVOLUTION = 4;
DATA = 5;
DROPOUT = 6;
DUMMY_DATA = 32;
EUCLIDEAN_LOSS = 7;
ELTWISE = 25;
FLATTEN = 8;
HDF5_DATA = 9;
HDF5_OUTPUT = 10;
HINGE_LOSS = 28;
IM2COL = 11;
IMAGE_DATA = 12;
INFOGAIN_LOSS = 13;
INNER_PRODUCT = 14;
LRN = 15;
MEMORY_DATA = 29;
MULTINOMIAL_LOGISTIC_LOSS = 16;
MVN = 34;
POOLING = 17;
POWER = 26;
RELU = 18;
SIGMOID = 19;
SIGMOID_CROSS_ENTROPY_LOSS = 27;
SILENCE = 36;
SOFTMAX = 20;
SOFTMAX_LOSS = 21;
SPLIT = 22;
SLICE = 33;
TANH = 23;
WINDOW_DATA = 24;
THRESHOLD = 31;
}
哇,吓我一跳!这么多!!
一个个的来分析,这么多种层,都分别在什么地方呢?包括:
vision_layers.hpp:ConvolutionLayer类,CuDNNConvolutionLayer类,Im2colLayer类,LRNLayer类,PoolingLayer类,CuDNNPoolingLayer类;
neuron_layers.hpp:NeuronLayer类,AbsValLayer类,BNLLLayer类,DropoutLayer类,PowerLayer类,ReLULayer类,CuDNNReLULayer类,SigmoidLayer类,CuDNNSigmoidLayer类,TanHLayer类,CuDNNTanHLayer类,ThresholdLayer类;
common_layers.hpp:ArgMaxLayer类,ConcatLayer类,EltwiseLayer类,FlattenLayer类,InnerProductLayer类,MVNLayer类,SilenceLayer类,SoftmaxLayer类,CuDNNSoftmaxLayer类,SplitLayer类,SliceLayer类
data_layers.hpp:BaseDataLayer类,BasePrefetchingDataLayer类,DataLayer类,DummyDataLayer类,HDF5DataLayer类,HDF5OutputLayer类,ImageDataLayer类,MemoryDataLayer类,WindowDataLayer类,
loss_layers.hpp:AccuracyLayer类,LossLayer类,ContrastiveLossLayer类,EuclideanLossLayer类,HingeLossLayer类,InfogainLossLayer类,MultinomialLogisticLossLayer类,SigmoidCrossEntropyLossLayer类,SoftmaxWithLossLayer类。
虽然这里有这么多种层,其实我们可能只关心其中的某一些而已。另外还看到,其实只有少部分的层使用GPU,也就是带有CuDNN的那些层。
相关文章推荐
- javascript性能优化-repaint和reflow
- Bootstrap Nav
- Java_io体系之BufferedReader、BufferedWriter字符流缓冲区
- jQuery插件开发
- 本地,怎么把自己做的html页面放到某个域下呢?
- js中的垃圾回收机制
- 支付6位密码样式
- JSP自定义标签开发入门
- 如何在JS中实现相互转换XML和JSON
- word里的字体大小 怎样 转换成 css 中的 字体 像素
- 剑指offer---- 圆圈中剩下的数----java实现
- js 动态给元素添加、移除事件的实现方法
- Node.js 运行异常 ecplise
- Jquery 选择 select 、radio 的几种方式
- 百度地图开发(三)之地图控制 + 定位
- Javascript 使用小案例
- jquery sortable实现table拖拽排序,更新时只更新受影响的行
- Jquery 常用的 选择器 归纳
- node版本问题过低
- js组件化 2 拖拽