2022-07-05 08:13:25 +02:00
|
|
|
#include "struct.h"
|
2022-09-23 14:25:56 +02:00
|
|
|
#include "initialisation.h"
|
2022-07-05 08:13:25 +02:00
|
|
|
|
|
|
|
#ifndef DEF_CREATION_H
|
|
|
|
#define DEF_CREATION_H
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Créé un réseau qui peut contenir max_size couche (dont celle d'input et d'output)
|
|
|
|
*/
|
2023-05-14 18:22:29 +02:00
|
|
|
Network* create_network(int max_size, float learning_rate, int dropout, int initialisation, int input_width, int input_depth);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Renvoie un réseau suivant l'architecture LeNet5
|
|
|
|
*/
|
2023-05-13 17:22:47 +02:00
|
|
|
Network* create_network_lenet5(float learning_rate, int dropout, int activation, int initialisation, int input_width, int input_depth);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
2023-05-14 17:40:50 +02:00
|
|
|
/*
|
2023-05-14 19:00:40 +02:00
|
|
|
* Renvoie un réseau suivant l'architecture AlexNet
|
|
|
|
* C'est à dire en entrée 3x227x227 et une sortie de taille 'size_output'
|
2023-05-14 17:40:50 +02:00
|
|
|
*/
|
2023-05-14 18:52:28 +02:00
|
|
|
Network* create_network_alexnet(float learning_rate, int dropout, int activation, int initialisation, int size_output);
|
2023-05-14 18:50:52 +02:00
|
|
|
|
2023-05-14 19:00:40 +02:00
|
|
|
/*
|
|
|
|
* Renvoie un réseau suivant l'architecture VGG16 modifiée pour prendre en entrée 3x256x256
|
|
|
|
* et une sortie de taille 'size_output'
|
|
|
|
*/
|
|
|
|
Network* create_network_VGG16(float learning_rate, int dropout, int activation, int initialisation, int size_output);
|
|
|
|
|
2023-01-21 18:59:59 +01:00
|
|
|
/*
|
2023-03-15 21:27:57 +01:00
|
|
|
* Renvoie un réseau sans convolution, similaire à celui utilisé dans src/dense
|
2023-01-21 18:59:59 +01:00
|
|
|
*/
|
2023-05-13 17:22:47 +02:00
|
|
|
Network* create_simple_one(float learning_rate, int dropout, int activation, int initialisation, int input_width, int input_depth);
|
2023-01-21 18:59:59 +01:00
|
|
|
|
2022-07-05 08:13:25 +02:00
|
|
|
/*
|
|
|
|
* Créé et alloue de la mémoire à une couche de type input cube
|
|
|
|
*/
|
2022-10-31 20:08:42 +01:00
|
|
|
void create_a_cube_input_layer(Network* network, int pos, int depth, int dim);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Créé et alloue de la mémoire à une couche de type input_z cube
|
|
|
|
*/
|
|
|
|
void create_a_cube_input_z_layer(Network* network, int pos, int depth, int dim);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Créé et alloue de la mémoire à une couche de type ligne
|
|
|
|
*/
|
|
|
|
void create_a_line_input_layer(Network* network, int pos, int dim);
|
|
|
|
|
|
|
|
/*
|
2023-05-13 13:37:46 +02:00
|
|
|
* Ajoute au réseau une couche d'average pooling avec la taille de noyau (kernel_size),
|
|
|
|
* le remplissage (padding) et le décalge (stride) choisis
|
2022-07-05 08:13:25 +02:00
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void add_average_pooling(Network* network, int kernel_size, int stride, int padding);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
2023-01-30 09:39:45 +01:00
|
|
|
/*
|
2023-05-13 13:37:46 +02:00
|
|
|
* Ajoute au réseau une couche de max pooling avec la taille de noyau (kernel_size),
|
|
|
|
* le remplissage (padding) et le décalge (stride) choisis
|
2023-01-30 09:39:45 +01:00
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void add_max_pooling(Network* network, int kernel_size, int stride, int padding);
|
2023-01-30 09:39:45 +01:00
|
|
|
|
2022-07-05 08:13:25 +02:00
|
|
|
/*
|
2023-05-13 13:37:46 +02:00
|
|
|
* Ajoute au réseau une couche de convolution avec la taille de noyau (kernel_size),
|
|
|
|
* le remplissage (padding) et le décalge (stride) choisis. Le choix de la profondeur de
|
2023-05-13 17:22:47 +02:00
|
|
|
* la couche suivante se fait avec number_of_kernels (= output_depth)
|
2023-05-13 13:37:46 +02:00
|
|
|
* Puis initialise les poids et les biais construits
|
2022-07-05 08:13:25 +02:00
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void add_convolution(Network* network, int kernel_size, int number_of_kernels, int stride, int padding, int activation);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
|
|
|
/*
|
2022-09-19 18:39:49 +02:00
|
|
|
* Ajoute au réseau une couche dense et initialise les poids et les biais
|
2022-07-05 08:13:25 +02:00
|
|
|
*/
|
2023-02-19 12:53:08 +01:00
|
|
|
void add_dense(Network* network, int size_output, int activation);
|
2022-07-05 08:13:25 +02:00
|
|
|
|
2022-09-19 18:39:49 +02:00
|
|
|
/*
|
|
|
|
* Ajoute au réseau une couche dense qui aplatit
|
|
|
|
*/
|
2023-02-19 12:53:08 +01:00
|
|
|
void add_dense_linearisation(Network* network, int size_output, int activation);
|
2022-09-19 18:39:49 +02:00
|
|
|
|
2022-07-05 08:13:25 +02:00
|
|
|
#endif
|