A singular Riemannian geometry approach to Deep Neural Networks.
fc_layer_sl.h
1 /******************************************************
2 *
3 * FEEDFORWARD LAYER WITH SILU ACTIVATION
4 * FUNCTION
5 *
6 ******************************************************/
7 
12 #ifndef FC_LAYER_SL_H
13 #define FC_LAYER_SL_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_sl : public layer
27 {
28  public:
29 
30  //ctors
32  fc_layer_sl( ) : layer() { };
34  fc_layer_sl(const std::vector<std::vector<double>> &weights_,const std::vector<double> &biases_);
36  fc_layer_sl(const Eigen::MatrixXd &weights_,const std::vector<double> &biases_);
38  fc_layer_sl(const Eigen::MatrixXd &weights_,const Eigen::VectorXd &biases_);
39 
40  //dtor
42  ~fc_layer_sl(){ };
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
52  Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override;
54  Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override;
55 
56 };
57 
58 #endif /* FC_LAYER_SL_H */
59 
layer::layer
layer()
Definition: layer.h:41
fc_layer_sl::predict_batch
std::vector< Eigen::VectorXd > predict_batch(const std::vector< Eigen::VectorXd > &input) override
Definition: fc_layer_sl.cpp:39
fc_layer_sl::predict
Eigen::VectorXd predict(const Eigen::VectorXd &input) override
Definition: fc_layer_sl.cpp:25
fc_layer_sl::compute_partial_derivatives_wrt_inputs
Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input) override
Definition: fc_layer_sl.cpp:50
fc_layer_sl
Feedforward layer with silu activation function.
Definition: fc_layer_sl.h:26
layer
Generic layer class.
Definition: layer.h:30
fc_layer_sl::~fc_layer_sl
~fc_layer_sl()
Definition: fc_layer_sl.h:47
fc_layer_sl::fc_layer_sl
fc_layer_sl()
Definition: fc_layer_sl.h:37
fc_layer_sl::compute_partial_derivatives_wrt_weights_biases
Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input) override
Definition: fc_layer_sl.cpp:69