#ifndef _ANN_H_ #define _ANN_H_ double sigmoid(double x); double sigderiv(double x); double threshold(double x); struct perceptron{ unsigned int num_input; unsigned int num_output; double **weights; }; void init_perceptron(unsigned int inputs, unsigned int outputs, struct perceptron *p); void free_perceptron(struct perceptron* p); void run_perceptron(struct perceptron* p, double* input, double* output); void update_perceptron(struct perceptron* p, double* input, double* output, double* correct_output, double nu); void train_perceptron(struct perceptron* p, double** inputs, double** correct_outputs, double nu, int num_examples); struct two_layer_NN{ unsigned int num_input; unsigned int num_output; unsigned int num_hidden; double *tmp; double **input_hidden_weights; double **hidden_output_weights; }; void init_two_layer_NN(unsigned int inputs, unsigned int outputs, unsigned int hidden, struct two_layer_NN *p); void free_two_layer_NN(struct two_layer_NN *p); void run_two_layer_NN(struct two_layer_NN* p, double* input, double* output); void update_two_layer_NN(struct two_layer_NN* p, double* input, double* output, double* correct_output, double nu); void train_two_layer_NN(struct two_layer_NN* p, double** inputs, double** correct_outputs, double nu, int num_examples); #endif