tipe/doc/cnn/neuron_io.md

83 lines
2.2 KiB
Markdown
Raw Normal View History

2022-12-09 22:18:58 +01:00
# Neuron IO
2022-09-23 15:25:00 +02:00
## 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
:---:|:---:|:---:
2022-09-23 16:03:53 +02:00
uint32_t|magic_number|Variable servant à vérifier que le fichier n'est pas corrompu, vaut 1012
2022-09-23 15:25:00 +02:00
uint32_t|size|Nombre de couches du réseau
uint32_t|initialisation|Fonction d'initialisation du réseau
uint32_t|dropout|Probabilité d'abandon
uint32_t|input_width[0]|
uint32_t|input_depth[0]|
uint32_t|...|
uint32_t|...|
2022-09-23 16:03:53 +02:00
uint32_t|input_width[size-1]|
uint32_t|input_depth[size-1]|
2022-09-23 15:25:00 +02:00
uint32_t|type_couche[0]|
uint32_t|...|
2022-09-23 16:03:53 +02:00
uint32_t|type_couche[size-1]|
2022-09-23 15:25:00 +02:00
> type_couche:
> | 0 -> cnn
> | 1 -> nn
> | 2 -> pooling
### Pré-corps:
On stocke pour chaque couche des informations supplémentaires en fonction de son type:
#### Si la couche est un cnn:
type | nom de la variable | commentaire
:---:|:---:|:---:
uint32_t|activation|
uint32_t|linearisation|
2022-09-23 15:25:00 +02:00
uint32_t|k_size|
uint32_t|rows|
uint32_t|columns|
#### Si la couche est un nn:
type | nom de la variable | commentaire
:---:|:---:|:---:
uint32_t|activation|
uint32_t|linearisation|
2023-02-19 12:50:27 +01:00
uint32_t|size_input|
2023-02-19 12:53:08 +01:00
uint32_t|size_output|
2022-09-23 15:25:00 +02:00
#### Si la couche est de type pooling:
type | nom de la variable | commentaire
:---:|:---:|:---:
uint32_t|linearisation|
2022-09-23 15:25:00 +02:00
uint32_t|pooling|
### Corps
On constitue ensuite le corps du fichier à partir des données contenues dans chaque couche de la manière suivante:
2022-09-23 15:25:00 +02:00
- Si la couche est de type pooling, on ne rajoute rien.
- Si la couche est de type cnn, on ajoute les biais et poids de manière croissante sur leurs indices:
type | nom de la variable | commentaire
:---:|:---:|:---:
2022-09-25 11:52:36 +02:00
float|bias[0][0][0]|biais
float|...|
float|bias[cnn->columns-1][cnn->k_size-1][cnn->k_size-1]|
float|weights[0][0][0][0]|poids
2022-09-25 11:52:36 +02:00
float|...|
float|weights[cnn->rows][cnn->columns-1][cnn->k_size-1][cnn->k_size-1]|
2022-09-23 15:25:00 +02:00
- Si la couche est de type nn, on ajoute les poids de manière croissante sur leurs indices:
type | nom de la variable | commentaire
:---:|:---:|:---:
2022-09-25 11:52:36 +02:00
float|bias[0]|biais
float|...|
2023-02-19 12:53:08 +01:00
float|bias[nn->size_output-1]|biais
2022-09-25 11:52:36 +02:00
float|weights[0][0]|poids
float|...|
2023-02-19 12:53:08 +01:00
float|weights[nn->size_input-1][nn->size_output-1]|