A singular Riemannian geometry approach to Deep Neural Networks.
fc_layer_sm.h
1 /******************************************************
2 *
3 * FEEDFORWARD LAYER WITH SOFTPLUS ACTIVATION
4 * FUNCTION
5 *
6 ******************************************************/
7 
8 #ifndef FC_LAYER_SM_H
9 #define FC_LAYER_SM_H
10 
11 //STD libs
12 #include<vector>
13 
14 //OpenMP libs
15 #include<omp.h>
16 
17 //Eigen libs
18 #include"Eigen/Dense"
19 
20 //Neural network libs
21 #include"activation_functions.h"
22 #include"layer.h"
23 
24 class fc_layer_sm : public layer
25 {
26  public:
27  //ctors
28  fc_layer_sm( ) : layer() { };
29  fc_layer_sm(const std::vector<std::vector<double>> &weights_, const std::vector<double> &biases_);
30  fc_layer_sm(const Eigen::MatrixXd &weights_, const Eigen::VectorXd &biases_);
31  fc_layer_sm(const Eigen::MatrixXd &weights_, const std::vector<double> &biases_);
32  //dtor
33  ~fc_layer_sm(){ };
34  //compute the output of the layer given an input
35  Eigen::VectorXd predict(const Eigen::VectorXd & input) override;
36  //get info about the layer
37  int get_num_nodes();
38  int get_input_size();
39 
40  //Partial derivatives
41  Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override;
42  Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override;
43 
44 
45 };
46 
47 #endif /* FC_LAYER_SM_H */
48 
fc_layer_sm
Definition: fc_layer_sm.h:24
layer::layer
layer()
Definition: layer.h:41
layer
Generic layer class.
Definition: layer.h:30
fc_layer_sm::compute_partial_derivatives_wrt_inputs
Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override
Definition: fc_layer_sm.cpp:42
fc_layer_sm::predict
Eigen::VectorXd predict(const Eigen::VectorXd &input) override
Definition: fc_layer_sm.cpp:26
fc_layer_sm::compute_partial_derivatives_wrt_weights_biases
Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override
Definition: fc_layer_sm.cpp:72