#include #include #include #include #include #include #include "neuron.h" #ifndef DEF_NEURAL_NETWORK_H #define DEF_NEURAL_NETWORK_H /* * Fonction max pour les floats */ float max(float a, float b); float sigmoid(float x); float sigmoid_derivative(float x); float leaky_ReLU(float x); float leaky_ReLU_derivative(float x); /* * Remplace le pointeur par un réseau de neurones qu'elle crée * et auquel elle alloue de la mémoire aux différentes variables */ void network_creation(Network* network, int* neurons_per_layer, int nb_layers); /* * Libère l'espace mémoire alloué dans le pointeur aux différentes * variables dans la fonction 'creation_du_network' */ void deletion_of_network(Network* network); /* * Effectue une propagation en avant du réseau de neurones lorsque * les données on été insérées dans la première couche. Le résultat * de la propagation se trouve dans la dernière couche */ void forward_propagation(Network* network); /* * Renvoie la liste des sorties voulues à partir du nombre voulu */ int* desired_output_creation(Network* network, int wanted_number); /* * Effectue une propagation en arrière du réseau de neurones * lorsqu'une forward_propagation a déjà été effectuée */ void backward_propagation(Network* network, int* desired_output); /* * Modifie les poids et le biais des neurones du réseau de neurones * après une ou plusieurs backward_propagation */ void network_modification(Network* network, uint32_t nb_modifs); /* * Initialise les variables du réseau de neurones */ void network_initialisation(Network* network); /* * Les deux réseaux donnés sont supposés de même dimensions, * Applique les modifications contenues dans delta à network */ void patch_network(Network* network, Network* delta, uint32_t nb_modifs); /* * Les deux réseaux donnés sont supposés de même dimensions */ void patch_delta(Network* network, Network* delta, uint32_t nb_modifs); /* * Renvoie une copie modifiable du réseau de neurones */ Network* copy_network(Network* network); /* * Renvoie l'erreur du réseau de neurones pour un numéro voulu */ float loss_computing(Network* network, int wanted_number); #endif