From b4c345e6a5fa929ba20eac19183b9c777055f52d Mon Sep 17 00:00:00 2001 From: Gaspard Coulet Date: Wed, 28 Apr 2021 23:12:36 +0200 Subject: Initial commit --- Neurone/NeuroneB.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Neurone/NeuroneB.cpp (limited to 'Neurone/NeuroneB.cpp') diff --git a/Neurone/NeuroneB.cpp b/Neurone/NeuroneB.cpp new file mode 100644 index 0000000..4556f8e --- /dev/null +++ b/Neurone/NeuroneB.cpp @@ -0,0 +1,85 @@ +#include"./NeuroneB.h" +/** + * Constructeur du Neurone avec biais + * @method NeuroneB::NeuroneB + * @param taille Taille du neurone + * @param x Vecteur de poids + * @param biais_w Valeur du biais + */ +NeuroneB::NeuroneB(int taille,std::vector * x, double biais_w){ + n = taille; + w = x; + w->push_back(biais_w); +} + +/** + * Constructeur du Neurone avec biais + * @method NeuroneB::NeuroneB + * @param taille Taille du neurone + */ +NeuroneB::NeuroneB(int taille,FonctionActivation::EnumFonctionActivation fct) { + n = taille; + fonctionActivation.setFonctionActivation(fct); + aleaWeights(); +} + +/** + * Affichage des poids + * @method NeuroneB::printWeight + */ +void NeuroneB::printWeight(){ + Neurone::printWeight(); + std::cout << "biais = " << (*w)[n] << std::endl; +} + +/** + * Génération aléatoire des poids + * @method NeuroneB::aleaWeights + */ +void NeuroneB::aleaWeights(){ + w = new std::vector (n,0.8); + std::default_random_engine generator(std::random_device{}()); + std::normal_distribution distribution(0,1); + for (int i=0; ipush_back(distribution(generator)); +} + +/** + * Méthode d'apprentissage (cf Neurone::fw_sum, cf Neurone::fw_activate, cf Neurone::derive_activate) + * @method Neurone::learn + * @param x Vecteur de poids + * @param o Valeur attendue + * @param k Valeur du biais + * @param mu Taux d'apprentissage | Learning rate + */ +void NeuroneB::learn(std::vector x,double o,double k, double mu){ + double sum = fw_sum(x); + double res = fw_activate(sum,k); + double derive = derive_activate(sum,k); + for(int i=0; i x)const{ + double res = Neurone::fw_sum(x); + res += (*w)[n]; + return res; +} + +/** + * @method NeuroneB::getNbPoids + * @return Nombre de poids + */ +int NeuroneB::getNbPoids(){ + return n+1; +} -- cgit v1.2.3