2#ifndef NEUR_GAUSS_GAUSSNET_H
3#define NEUR_GAUSS_GAUSSNET_H
28 double etaW,
double etaC,
36 double smax,
double wmax );
66 virtual void init(
unsigned ninp,
unsigned ngauss,
bool samesigma =
true );
75 double smax = 5,
double wmax = 1 );
78 double smax = 5,
double wmax = 1 );
81 double smax = 5,
double wmax = 1 );
84 double smax = 5,
double wmax = 1 );
87 double smax = 5,
double wmax = 1 );
92 unsigned nInputs()
const {
return( _ninputs ); }
98 template<
class InputIterator>
99 void setCenter(
unsigned n,
const InputIterator & start );
102 template<
class InputIterator>
103 double prop(
const InputIterator & start )
const;
112 double learnAll(
const std::vector<double> & vec,
double d,
double etaW,
113 double etaC = 0,
double etaS = 0 );
115 double learnWeights(
const std::vector<double> & vec,
double d,
double etaW,
116 double etaC = 0,
double etaS = 0 );
118 double learnCenters(
const std::vector<double> & vec,
double d,
double etaW,
119 double etaC = 0,
double etaS = 0 );
121 double learnSigma(
const std::vector<double> & vec,
double d,
double etaW,
122 double etaC = 0,
double etaS = 0 );
124 double learnWtSig(
const std::vector<double> & vec,
double d,
double etaW,
125 double etaC = 0,
double etaS = 0 );
127 double learnMulSig(
const std::vector<double> & vec,
double d,
double etaW,
128 double etaC = 0,
double etaS = 0 );
130 double learnCycle(
const std::vector<double> & vec,
double d,
double etaW,
131 double etaC = 0,
double etaS = 0 );
147template<
class InputIterator>
160template<
class InputIterator>
void randInitAll(double cmax=1, double smin=0.3, double smax=5, double wmax=1)
Initialise avec des valeurs aléatoires.
const Gaussian * gauss(unsigned n) const
double learnMulSig(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Aprentissage avec modifs multiplicatives sur les sigmas.
virtual void init(unsigned ninp, unsigned ngauss, bool samesigma=true)
Crée le réseau avec ninp entrées et ngauss gaussiennes.
virtual void clear()
Efface tout.
void randInitCenters(double cmax=0, double smin=0.3, double smax=5, double wmax=1)
Initialise seulement les centres.
double weight(unsigned n) const
double learnCenters(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage des centres seuls.
GaussNet(const GaussNet &gn)
Copie.
double learnAll(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage par gradient.
Gaussian * gauss(unsigned n)
GaussNet & operator=(const GaussNet &gn)
void setCenter(unsigned n, const InputIterator &start)
double learnSigma(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage des écarts-types seuls.
double learnCycle(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage alterné Wt - Center - Sigma.
void removeGaussian(unsigned num)
RandInitFunc randInit
Fonction d'initialisation.
LearnFunc learn
Fonction d'apprentissage.
double prop(const InputIterator &start) const
double learnWtSig(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage des coefs et des écarts-types.
double learnWeights(const std::vector< double > &vec, double d, double etaW, double etaC=0, double etaS=0)
Apprentissage des coefs seuls.
void(GaussNet::* RandInitFunc)(double cmax, double smin, double smax, double wmax)
Type de fonction d'initialisation aléatoire des paramètres du réseau.
static unsigned CyclePeriod
Nombre de passes entre changements de type d'apprentissage.
void randInitSigma(double cmax=1, double smin=0.5, double smax=5, double wmax=1)
Initialise seulement les écarts-types.
void setWeight(unsigned n, double w)
void randInitWtSig(double cmax=1, double smin=0.5, double smax=5, double wmax=1)
Initialise les poids et les écarts-types.
double(GaussNet::* LearnFunc)(const std::vector< double > &vec, double d, double etaW, double etaC, double etaS)
Type de fonction d'apprentissage.
void randInitWeights(double cmax=0, double smin=0.3, double smax=5, double wmax=1)
Initialise seulement les poids.
Gaussienne, avec centre et écart-type.
void setCenter(const InputIterator &start)
double value(const InputIterator &start) const