Add comments in headers files

This commit is contained in:
augustin64 2022-06-03 15:47:02 +02:00
parent 265ffae273
commit 828d7b83cc
3 changed files with 90 additions and 6 deletions

View File

@ -1,6 +1,9 @@
#ifndef DEF_MAIN_H
#define DEF_MAIN_H
/*
* Structure donnée en argument à la fonction 'train_images'
*/
typedef struct TrainParameters {
Network* network;
int*** images;
@ -12,16 +15,78 @@ typedef struct TrainParameters {
float accuracy;
} TrainParameters;
/*
* Affiche une image ainsi que les prévisions faites par le réseau de neurones sur sa valeur
* width, height: dimensions de l'image
* image: tableau 2*2 contenant l'image
* previsions: prévisions faites par le réseau neuronal
*/
void print_image(unsigned int width, unsigned int height, int** image, float* previsions);
/*
* Renvoie l'indice de l'élément maximum d'un tableau de taille n
*/
int indice_max(float* tab, int n);
/*
* Affiche un message d'aide
* call: chaîne de caractères utilisées pour appeler le programme
*/
void help(char* call);
/*
* Écrit l'image les valeurs d'un tableau dans la première couche d'un réseau neuronal
* image: tableau contenant l'image
* network: réseau neuronal
* height, width: dimensions de l'image
*/
void write_image_in_network(int** image, Network* network, int height, int width);
/*
* Sous fonction de 'train' assignée à un thread
* parameters: voir la structure 'TrainParameters'
*/
void* train_images(void* parameters);
/*
* Fonction d'entraînement du réseau
* epochs: nombre d'époques
* layers: nombre de couches
* neurons: nombre de neurones sur la première couche
* recovery: nom du fichier contenant un réseau sur lequel continuer l'entraînement (Null si non utilisé)
* image_file: nom du fichier contenant les images
* label_file: nom du fichier contenant les labels associés
* out: nom du fichier dans lequel écrire le réseau entraîné
* delta: nom du fichier écrire le réseau différentiel (utilisation en parallèle avec d'autres clients) (Null si non utilisé)
* nb_images_to_process: nombre d'images sur lesquelles entraîner le réseau (-1 si non utilisé)
* start: index auquel démarrer si nb_images_to_process est utilisé (0 si non utilisé)
*/
void train(int epochs, int layers, int neurons, char* recovery, char* image_file, char* label_file, char* out, char* delta, int nb_images_to_process, int start);
/*
* Reconnaissance d'un set d'images, renvoie un tableau de float contentant les prédictions
* modele: nom du fichier contenant le réseau neuronal
* entree: nom du fichier contenant les images à reconnaître
*/
float** recognize(char* modele, char* entree);
/*
* Renvoie les prédictions d'images sur stdout
* modele: nom du fichier contenant le réseau neuronal
* entree: fichier contenant les images
* sortie: vaut 'text' ou 'json', spécifie le format auquel afficher les prédictions
*/
void print_recognize(char* modele, char* entree, char* sortie);
/*
* Teste un réseau neuronal avec un fichier d'images ainsi que leurs propriétés
* modele: nom du fichier contenant le réseau neuronal
* fichier_images: nom du fichier contenant les images
* fichier_labels: nom du fichier contenant les labels
* preview_fails: faut-il afficher les images qui ne sont pas correctement reconnues ?
*/
void test(char* modele, char* fichier_images, char* fichier_labels, bool preview_fails);
int main(int argc, char* argv[]);
#endif

View File

@ -7,11 +7,30 @@
#define DEF_MNIST_H
uint32_t swap_endian(uint32_t val);
/*
* Renvoie le nombre d'éléments dans un set de labels au format IDX
*/
uint32_t read_mnist_labels_nb_images(char* filename);
/*
* Lit et renvoie une image dans un fichier spécifié par ptr
*/
int** read_image(unsigned int width, unsigned int height, FILE* ptr);
/*
* Renvoie les paramètres [nb_elem, width, height]
*/
int* read_mnist_images_parameters(char* filename);
int* read_mnist_labels_parameters(char* filename);
/*
* Charge dans la mémoire des images du set de données MNIST au format IDX
*/
int*** read_mnist_images(char* filename);
/*
* Charge dans la mémoire des labels du set de données MNIST au format IDX
*/
unsigned int* read_mnist_labels(char* filename);
#endif

View File

@ -11,7 +11,6 @@ uint32_t swap_endian(uint32_t val) {
}
// Renvoie une image sous forme d'un int**
int** read_image(unsigned int width, unsigned int height, FILE* ptr) {
unsigned char buffer[width*height];
int** image = (int**)malloc(sizeof(int*)*height);
@ -30,7 +29,7 @@ int** read_image(unsigned int width, unsigned int height, FILE* ptr) {
return image;
}
// renvoie [nb_elem, width, height]
int* read_mnist_images_parameters(char* filename) {
int* tab = (int*)malloc(sizeof(int)*3);
FILE *ptr;
@ -62,6 +61,7 @@ int* read_mnist_images_parameters(char* filename) {
return tab;
}
uint32_t read_mnist_labels_nb_images(char* filename) {
FILE *ptr;
@ -84,7 +84,7 @@ uint32_t read_mnist_labels_nb_images(char* filename) {
return number_of_images;
}
// Lit un set de données images sous format de la base de données MNIST
int*** read_mnist_images(char* filename) {
FILE *ptr;
@ -120,7 +120,7 @@ int*** read_mnist_images(char* filename) {
return tab;
}
// Renvoie des labels formattés sous le format de la base MNIST
// Renvoie des labels formatés sous le format de la base MNIST
unsigned int* read_mnist_labels(char* filename) {
FILE* ptr;