mirror of
https://github.com/augustin64/projet-tipe
synced 2025-03-14 14:55:22 +01:00
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
#include "struct.h"
|
|
|
|
#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
|
|
|
|
/*
|
|
* Réduit la valeur de a si abs(a) > CLIP_VALUE
|
|
* Renvoie la valeur modifiée càd `signe(a)*min(abs(a), CLIP_VALUE)`
|
|
*/
|
|
float clip(float a);
|
|
|
|
/*
|
|
* Met à jours les poids à partir de données obtenus après plusieurs backpropagations
|
|
* Puis met à 0 tous les d_weights
|
|
*/
|
|
void update_weights(Network* network, Network* d_network);
|
|
|
|
/*
|
|
* Met à jours les biais à partir de données obtenus après plusieurs backpropagations
|
|
* Puis met à 0 tous les d_bias
|
|
*/
|
|
void update_bias(Network* network, Network* d_network);
|
|
|
|
/*
|
|
* Met à 0 toutes les données de backpropagation de poids
|
|
*/
|
|
void reset_d_weights(Network* network);
|
|
|
|
/*
|
|
* Met à 0 toutes les données de backpropagation de biais
|
|
*/
|
|
void reset_d_bias(Network* network);
|
|
|
|
#endif |