diff --git a/src/cnn/include/config.h b/src/cnn/include/config.h new file mode 100644 index 0000000..92daf00 --- /dev/null +++ b/src/cnn/include/config.h @@ -0,0 +1,26 @@ +#ifndef DEF_CONFIG_H +#define DEF_CONFIG_H + +//* Paramètres d'entraînement +#define EPOCHS 10 // Nombre d'époques par défaut (itérations sur toutes les images) +#define BATCHES 32 // Nombre d'images à voir avant de mettre le réseau à jour +#define LEARNING_RATE 3e-4 // Taux d'apprentissage +#define USE_MULTITHREADING // Commenter pour utiliser un seul coeur durant l'apprentissage (meilleur pour des tailles de batchs traités rapidement) + + +//* Paramètre d'optimisation pour un dataset Jpeg +// keep images in ram e.g re-read and decompress each time +// Enabling this will lead to a large amount of ram used while economizing not that +// much computing power +// Note: 50States10K dataset is 90Go once decompressed, use with caution +//#define STORE_IMAGES_TO_RAM + + +//* Limite du réseau +// Des valeurs trop grandes dans le réseau risqueraient de provoquer des overflows notamment. +// On utilise donc la méthode gradient_clipping, +// qui consiste à majorer tous les biais et poids par un hyper-paramètre choisi précédemment. +// https://arxiv.org/pdf/1905.11881.pdf +#define NETWORK_CLIP_VALUE 300 + +#endif \ No newline at end of file diff --git a/src/cnn/include/jpeg.h b/src/cnn/include/jpeg.h index af8999f..42120d2 100644 --- a/src/cnn/include/jpeg.h +++ b/src/cnn/include/jpeg.h @@ -1,9 +1,7 @@ #ifndef JPEG_DEF_H #define JPEG_DEF_H -// keep images in ram vs re-read and decompress each time -// #define STORE_IMAGES_TO_RAM -// Note: in use dataset is 90Go once decompressed, use with caution +#include "config.h" /* * Struct used to describe a single JPEG image diff --git a/src/cnn/include/train.h b/src/cnn/include/train.h index 5c19e36..b7c8cdb 100644 --- a/src/cnn/include/train.h +++ b/src/cnn/include/train.h @@ -4,10 +4,7 @@ #ifndef DEF_TRAIN_H #define DEF_TRAIN_H -#define EPOCHS 10 -#define BATCHES 32 -#define USE_MULTITHREADING -#define LEARNING_RATE 3e-4 +#include "config.h" /* diff --git a/src/cnn/include/update.h b/src/cnn/include/update.h index d1a72a2..21f17ae 100644 --- a/src/cnn/include/update.h +++ b/src/cnn/include/update.h @@ -3,13 +3,7 @@ #ifndef DEF_UPDATE_H #define DEF_UPDATE_H -/* -* Des valeurs trop grandes dans le réseau risqueraient de provoquer des overflows notamment. -* On utilise donc la méthode gradient_clipping, -* qui consiste à majorer tous les biais et poids par un hyper-paramètre choisi précédemment. -* https://arxiv.org/pdf/1905.11881.pdf -*/ -#define CLIP_VALUE 300 +#include "config.h" /* * Réduit la valeur de a si abs(a) > CLIP_VALUE diff --git a/src/cnn/update.c b/src/cnn/update.c index 8ec3807..5a1f572 100644 --- a/src/cnn/update.c +++ b/src/cnn/update.c @@ -4,11 +4,11 @@ #include "include/struct.h" float clip(float a) { - if (a > CLIP_VALUE) { - return CLIP_VALUE; + if (a > NETWORK_CLIP_VALUE) { + return NETWORK_CLIP_VALUE; } - if (a < -CLIP_VALUE) { - return -CLIP_VALUE; + if (a < -NETWORK_CLIP_VALUE) { + return -NETWORK_CLIP_VALUE; } return a; }