caffe源码阅读5-各种layer概述

工厂模式:一个工厂可以生产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的那些层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值