Add nn io documentation

This commit is contained in:
augustin64 2022-09-23 14:27:13 +02:00
parent 55db9985a5
commit defb14f6cd
2 changed files with 31 additions and 1 deletions

28
doc/nn.md Normal file
View File

@ -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

View File

@ -1,6 +1,7 @@
#ifndef DEF_NEURON_H #ifndef DEF_NEURON_H
#define DEF_NEURON_H #define DEF_NEURON_H
// Neurone
typedef struct Neuron { typedef struct Neuron {
float* weights; // Liste de tous les poids des arêtes sortants du neurone float* weights; // Liste de tous les poids des arêtes sortants du neurone
float bias; // Caractérise le bias 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 float last_back_bias; // Dernier changement de back_bias
} Neuron; } Neuron;
// Couche du réseau de neurones
typedef struct Layer { typedef struct Layer {
int nb_neurons; // Nombre de neurones dans la couche (longueur du tableau ci-dessous) int nb_neurons; // Nombre de neurones dans la couche (longueur du tableau ci-dessous)
Neuron** neurons; // Tableau des neurones dans la couche Neuron** neurons; // Tableau des neurones dans la couche
} Layer; } Layer;
// Réseau de neurones
typedef struct Network { typedef struct Network {
int nb_layers; // Nombre de couches dans le réseau neuronal (longueur du tableau ci-dessous) 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 Layer** layers; // Tableau des couches dans le réseau neuronal