diff --git a/doc/nn.md b/doc/nn.md new file mode 100644 index 0000000..6c8432f --- /dev/null +++ b/doc/nn.md @@ -0,0 +1,28 @@ +# Réseau de neurones simple [lien](/src/mnist) + +## Lecture/ Écriture du réseau de neurone: +Le fichier est au format IDX (format binaire) +Les informations sont stockées de la manière suivante: + +### Header +type | nom de la variable | commentaire +:---:|:---:|:---: +uint32_t|magic_number|Variable servant à vérifier que le fichier n'est pas corrompu, vaut 2023 +uint32_t|network->nb_layers|Nombre de couches du réseau +uint32_t|network->layers[0]->nb_neurons|Nombre de neurones de la première couche +uint32_t|network->layers[1]->nb_neurons|Nombre de neurones de la deuxième couche +uint32_t|...|- +uint32_t|network->layers[n-1]->nb_neurons|Nombre de neurones de la n-ième couche +uint32_t|network->layers[1]->nb_neurons|Nombre de neurones de la deuxième couche + + +### Corps +Et ensuite, pour chaque couche, chaque neurone: +type | nom de la variable | commentaire +:---:|:---:|:---: +float|activation|importance du neurone dans le réseau +float|biais|biais du neurone +float|weights[0]|poids vers le premier neurone de la couche suivante +float|weights[1]|poids vers le deuxième neurone de la couche suivante +float|...|- +float|weights[n-1]|poids vers le dernier neurone de la couche suivante \ No newline at end of file diff --git a/src/mnist/include/neuron.h b/src/mnist/include/neuron.h index d866193..ed6cc9d 100644 --- a/src/mnist/include/neuron.h +++ b/src/mnist/include/neuron.h @@ -1,6 +1,7 @@ #ifndef DEF_NEURON_H #define DEF_NEURON_H +// Neurone typedef struct Neuron { float* weights; // Liste de tous les poids des arêtes sortants du neurone float bias; // Caractérise le bias du neurone @@ -12,12 +13,13 @@ typedef struct Neuron { float last_back_bias; // Dernier changement de back_bias } Neuron; - +// Couche du réseau de neurones typedef struct Layer { int nb_neurons; // Nombre de neurones dans la couche (longueur du tableau ci-dessous) Neuron** neurons; // Tableau des neurones dans la couche } Layer; +// Réseau de neurones typedef struct Network { int nb_layers; // Nombre de couches dans le réseau neuronal (longueur du tableau ci-dessous) Layer** layers; // Tableau des couches dans le réseau neuronal