euclidean layer update
[jacinto-ai/caffe-jacinto.git] / src / caffe / layer_factory.hpp
1 // Copyright 2013 Yangqing Jia
3 #ifndef CAFFE_LAYER_FACTORY_HPP_
4 #define CAFFE_LAYER_FACTORY_HPP_
6 #include <string>
8 #include "caffe/layer.hpp"
9 #include "caffe/vision_layers.hpp"
10 #include "caffe/proto/caffe.pb.h"
13 namespace caffe {
16 // A function to get a specific layer from the specification given in
17 // LayerParameter. Ideally this would be replaced by a factory pattern,
18 // but we will leave it this way for now.
19 template <typename Dtype>
20 Layer<Dtype>* GetLayer(const LayerParameter& param) {
21   const std::string& type = param.type();
22   if (type == "conv") {
23     return new ConvolutionLayer<Dtype>(param);
24   } else if (type == "data") {
25     return new DataLayer<Dtype>(param);
26   } else if (type == "dropout") {
27     return new DropoutLayer<Dtype>(param);
28   } else if (type == "euclidean_loss") {
29     return new EuclideanLossLayer<Dtype>(param);
30   } else if (type == "im2col") {
31     return new Im2colLayer<Dtype>(param);
32   } else if (type == "innerproduct") {
33     return new InnerProductLayer<Dtype>(param);
34   } else if (type == "lrn") {
35     return new LRNLayer<Dtype>(param);
36   } else if (type == "padding") {
37     return new PaddingLayer<Dtype>(param);
38   } else if (type == "pool") {
39     return new PoolingLayer<Dtype>(param);
40   } else if (type == "relu") {
41     return new ReLULayer<Dtype>(param);
42   } else if (type == "softmax") {
43     return new SoftmaxLayer<Dtype>(param);
44   } else if (type == "multinomial_logistic_loss") {
45     return new MultinomialLogisticLossLayer<Dtype>(param);
46   } else {
47     LOG(FATAL) << "Unknown filler name: " << type;
48   }
49   // just to suppress old compiler warnings.
50   return (Layer<Dtype>*)(NULL);
51 }
54 }  // namespace caffe
56 #endif  // CAFFE_LAYER_FACTORY_HPP_