您的位置:首页 > Web前端

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的那些层。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: