A singular Riemannian geometry approach to Deep Neural Networks.
|
25 #include"activation_functions.h"
37 layer(
const std::vector<std::vector<double>> &weights_,
const std::vector<double> &biases_);
39 layer(
const std::vector<std::vector<double>> &weights_);
41 layer(
const Eigen::MatrixXd &weights_);
43 layer(
const Eigen::MatrixXd &weights_,
const std::vector<double> &biases_);
45 layer(
const Eigen::MatrixXd &weights_,
const Eigen::VectorXd &biases_);
47 layer(
const Eigen::MatrixXd &weights_,
const Eigen::VectorXd &biases_,
int in_dim,
int out_dim);
55 virtual Eigen::VectorXd
predict(
const Eigen::VectorXd & input) {
return input;};
57 virtual std::vector<Eigen::VectorXd>
predict_batch(
const std::vector<Eigen::VectorXd> & input) {
return input;};
79 void set_biases(
const Eigen::VectorXd & biases_);
81 void set_biases(
const std::vector<double> & biases_);
140 Eigen::VectorXd biases;
141 Eigen::MatrixXd weights;
143 int weights_rows = 0;
146 int weights_cols = 0;
150 double exp_max_cut = 50.;
151 double exp_zero_approx = 1.92874984e-22;
const Eigen::MatrixXd get_weights_biases_as_vec_col_maj()
Definition: layer.cpp:122
layer()
Definition: layer.h:41
double get_bias(int i)
Definition: layer.cpp:99
const Eigen::MatrixXd get_weights()
Definition: layer.cpp:89
int get_input_size()
Definition: layer.cpp:238
void set_bias(int i, double bias_)
Definition: layer.cpp:184
virtual std::vector< Eigen::VectorXd > predict_batch(const std::vector< Eigen::VectorXd > &input)
Definition: layer.h:63
void set_weights_biases(Eigen::MatrixXd &source)
Definition: layer.cpp:189
virtual Eigen::MatrixXd compute_partial_derivatives_wrt_weights_biases(Eigen::VectorXd &input)=0
virtual Eigen::VectorXd predict(const Eigen::VectorXd &input)
Definition: layer.h:61
const Eigen::MatrixXd get_weights_biases_as_mat()
Definition: layer.cpp:104
void set_weights_biases_row_maj(Eigen::MatrixXd &source)
Definition: layer.cpp:204
virtual Eigen::MatrixXd compute_partial_derivatives_wrt_inputs(Eigen::VectorXd &input)=0
void set_weights_biases_compact(Eigen::MatrixXd &source)
Definition: layer.cpp:219
int get_weights_cols()
Definition: layer.cpp:248
void set_exp_max_cut(double exp_max_cut_)
Definition: layer.cpp:275
Generic layer class.
Definition: layer.h:30
int get_weights_rows()
Definition: layer.cpp:243
int get_num_nodes()
Definition: layer.cpp:233
const Eigen::MatrixXd get_weights_biases_as_vec_row_maj()
Definition: layer.cpp:140
const Eigen::VectorXd get_biases()
Definition: layer.cpp:84
double get_exp_max_cut()
Definition: layer.cpp:285
void set_weight(int i, int j, double weight_)
Definition: layer.cpp:179
double get_weight(int i, int j)
Definition: layer.cpp:94
void set_exp_zero_approx(double exp_zero_approx_)
Definition: layer.cpp:280
void transpose_weights()
Definition: layer.cpp:258
virtual ~layer()
Definition: layer.h:57
double get_exp_zero_approx()
Definition: layer.cpp:290
std::string get_type()
Definition: layer.cpp:253
void set_biases(const Eigen::VectorXd &biases_)
Definition: layer.cpp:169
void set_weights(const Eigen::MatrixXd &weights_)
Definition: layer.cpp:174