MiniDNN
Layer.h
1 #ifndef LAYER_H_
2 #define LAYER_H_
3 
4 #include <Eigen/Core>
5 #include <vector>
6 #include "Config.h"
7 #include "RNG.h"
8 #include "Optimizer.h"
9 
10 namespace MiniDNN {
11 
12 
16 
24 class Layer
25 {
26 protected:
27  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> Matrix;
28  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1> Vector;
29 
30  const int m_in_size; // Size of input units
31  const int m_out_size; // Size of output units
32 
33 public:
42  Layer(const int in_size, const int out_size) :
43  m_in_size(in_size), m_out_size(out_size)
44  {}
45 
49  virtual ~Layer() {}
50 
54  int in_size() const { return m_in_size; }
58  int out_size() const { return m_out_size; }
59 
66  virtual void init(const Scalar& mu, const Scalar& sigma, RNG& rng) = 0;
67 
82  virtual void forward(const Matrix& prev_layer_data) = 0;
83 
97  virtual const Matrix& output() const = 0;
98 
116  virtual void backprop(const Matrix& prev_layer_data, const Matrix& next_layer_data) = 0;
117 
125  virtual const Matrix& backprop_data() const = 0;
126 
132  virtual void update(Optimizer& opt) = 0;
133 
137  virtual std::vector<Scalar> get_parameters() const = 0;
141  virtual void set_parameters(const std::vector<Scalar>& param) {};
142 
146  virtual std::vector<Scalar> get_derivatives() const = 0;
147 };
148 
149 
150 } // namespace MiniDNN
151 
152 
153 #endif /* LAYER_H_ */
virtual void set_parameters(const std::vector< Scalar > &param)
Definition: Layer.h:141
virtual const Matrix & backprop_data() const =0
virtual void init(const Scalar &mu, const Scalar &sigma, RNG &rng)=0
virtual std::vector< Scalar > get_derivatives() const =0
int out_size() const
Definition: Layer.h:58
virtual void backprop(const Matrix &prev_layer_data, const Matrix &next_layer_data)=0
virtual std::vector< Scalar > get_parameters() const =0
int in_size() const
Definition: Layer.h:54
virtual const Matrix & output() const =0
Layer(const int in_size, const int out_size)
Definition: Layer.h:42
virtual ~Layer()
Definition: Layer.h:49
virtual void forward(const Matrix &prev_layer_data)=0
virtual void update(Optimizer &opt)=0