2022-07-05 08:13:25 +02:00
|
|
|
#ifndef DEF_STRUCT_H
|
|
|
|
#define DEF_STRUCT_H
|
|
|
|
|
|
|
|
typedef struct Kernel_cnn {
|
|
|
|
int k_size;
|
|
|
|
int rows;
|
|
|
|
int columns;
|
|
|
|
int b;
|
|
|
|
float*** bias; // De dimension columns*k_size*k_size
|
|
|
|
float*** d_bias; // De dimension columns*k_size*k_size
|
|
|
|
float**** w; // De dimension rows*columns*k_size*k_size
|
|
|
|
float**** d_w; // De dimension rows*columns*k_size*k_size
|
|
|
|
} Kernel_cnn;
|
|
|
|
|
|
|
|
typedef struct Kernel_nn {
|
2022-09-12 17:56:44 +02:00
|
|
|
int input_units; // Nombre d'éléments en entrée
|
2022-07-05 08:13:25 +02:00
|
|
|
int output_units;
|
|
|
|
float* bias; // De dimension output_units
|
|
|
|
float* d_bias; // De dimension output_units
|
|
|
|
float** weights; // De dimension input_units*output_units
|
|
|
|
float** d_weights; // De dimension input_units*output_units
|
|
|
|
} Kernel_nn;
|
|
|
|
|
|
|
|
typedef struct Kernel {
|
|
|
|
Kernel_cnn* cnn;
|
|
|
|
Kernel_nn* nn;
|
|
|
|
int activation; // Vaut l'activation sauf pour un pooling où il: vaut kernel_size*100 + activation
|
|
|
|
} Kernel;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct Network{
|
|
|
|
int dropout; // Contient la probabilité d'abandon entre 0 et 100 (inclus)
|
|
|
|
int initialisation; // Contient le type d'initialisation
|
|
|
|
int max_size; // Taille maximale du réseau après initialisation
|
|
|
|
int size; // Taille actuelle du réseau
|
2022-09-12 17:56:44 +02:00
|
|
|
int* width; // Contient les dimensions de l'input (width*depth)
|
|
|
|
int* depth; // Contient les dimensions de l'input (width*depth)
|
2022-09-10 17:17:49 +02:00
|
|
|
Kernel** kernel;
|
2022-09-12 17:56:44 +02:00
|
|
|
float**** input; // Équivalent du z
|
2022-07-05 08:13:25 +02:00
|
|
|
} Network;
|
|
|
|
|
|
|
|
#endif
|