12 #ifndef NEURAL_NETWORK_H
13 #define NEURAL_NETWORK_H
54 void print_network_info();
59 void print_network_detailed_info();
62 Eigen::VectorXd predict(
const Eigen::VectorXd &input);
64 Eigen::VectorXd predict_to_layer(
int tolayer,
const Eigen::VectorXd &input);
67 std::vector<Eigen::VectorXd> predict(
const std::vector<Eigen::VectorXd> &input);
69 std::vector<Eigen::VectorXd> predict_to_layer(
int tolayer,
const std::vector<Eigen::VectorXd> &input);
74 void network_read(
const std::string &filename);
76 void network_save(
const std::string &filename);
90 void add_layer_all_parameters(
int wrows,
int wcols,
int in_dim,
int out_dim, std::string type);
99 void add_fc_input_layer(
int in_dim,
int out_dim, std::string type);
109 void add_fc_hidden_layer(
int out_dim, std::string type);
113 void set_layer_weights(
int num_layer, Eigen::MatrixXd& weights_);
115 void set_layer_biases(
int num_layer, Eigen::VectorXd& biases_);
117 Eigen::MatrixXd get_layer_weights(
int num_layer);
119 Eigen::VectorXd get_layer_biases(
int num_layer);
122 double loss_mse(
const std::vector<Eigen::VectorXd> &data,
const std::vector<Eigen::VectorXd> &features);
123 double accuracy(
const std::vector<Eigen::VectorXd> &data,
const std::vector<Eigen::VectorXd> &features);
136 void SiMEC_1D(std::string output_file,
int steps,
double delta,
bool invert_build, Eigen::VectorXd ipoint);
148 void SiMEC_1D_norm_proj(std::string output_file,
int steps,
double delta,
bool invert_build, Eigen::VectorXd ipoint, Eigen::VectorXd &H_inf, Eigen::VectorXd &H_sup);
160 void SiMEC_1D_stop_boundary(std::string output_file,
int steps,
double delta,
bool invert_build, Eigen::VectorXd ipoint, Eigen::VectorXd &H_inf, Eigen::VectorXd &H_sup);
174 void SiMExp_1D(std::string output_file,
double delta,
double epsilon,
int max_steps,
bool invert_build, Eigen::VectorXd & ipoint);
178 void ClassChange_1D(std::string output_file,
int steps,
double delta,
bool invert_build, Eigen::VectorXd ipoint);
182 layer* get_layer(
int n)
189 std::vector<layer*> layers;