A singular Riemannian geometry approach to Deep Neural Networks.
fc_layer_sg.h
1 /******************************************************
2 *
3 * FEEDFORWARD LAYER WITH SIGMOID ACTIVATION
4 * FUNCTION
5 *
6 ******************************************************/
7 
12 #ifndef FC_LAYER_SG_H
13 #define FC_LAYER_SG_H
14 
15 //STD libs
16 #include<vector>
17 #include<omp.h>
18 
19 //Eigen libs
20 #include"Eigen/Dense"
21 
22 //Neural network libs
23 #include"activation_functions.h"
24 #include"layer.h"
25 
26 class fc_layer_sg : public layer
27 {
28  public:
29 
30  //ctors
32  fc_layer_sg( ) : layer() { };
34  fc_layer_sg(const std::vector<std::vector<double>> &weights_,const std::vector<double> &biases_);
36  fc_layer_sg(const Eigen::MatrixXd &weights_,const std::vector<double> &biases_);
38  fc_layer_sg(const Eigen::MatrixXd &weights_,const Eigen::VectorXd &biases_);
39 
40  //dtor
42  ~fc_layer_sg(){ };
43 
44  //Computes the output of the layer given an input
46  Eigen::VectorXd predict(const Eigen::VectorXd & input) override;
48  std::vector<Eigen::VectorXd> predict_batch(const std::vector<Eigen::VectorXd> & input) override;
49 
50  //Jacobians
51  //Result contains only non-zero entries (reduced form)
53  Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override;
55  Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override;
56 
57 };
58 
59 #endif /* FC_LAYER_SG_H */
60 
layer::layer
layer()
Definition: layer.h:41
fc_layer_sg
Feedforward layer with sigmoid activation function.
Definition: fc_layer_sg.h:26
fc_layer_sg::predict_batch
std::vector< Eigen::VectorXd > predict_batch(const std::vector< Eigen::VectorXd > &input) override
Definition: fc_layer_sg.cpp:34
fc_layer_sg::compute_partial_derivatives_wrt_weights_biases
Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override
Definition: fc_layer_sg.cpp:75
layer
Generic layer class.
Definition: layer.h:30
fc_layer_sg::~fc_layer_sg
~fc_layer_sg()
Definition: fc_layer_sg.h:47
fc_layer_sg::compute_partial_derivatives_wrt_inputs
Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override
Definition: fc_layer_sg.cpp:51
fc_layer_sg::fc_layer_sg
fc_layer_sg()
Definition: fc_layer_sg.h:37
fc_layer_sg::predict
Eigen::VectorXd predict(const Eigen::VectorXd &input) override
Definition: fc_layer_sg.cpp:25