Neuron: neural networks


mlp.h
Go to the documentation of this file.
1
2
3#ifndef NEUR_MLP_MLP_H
4#define NEUR_MLP_MLP_H
5
6
7#include <neur/mlp/net.h>
8
9
10// PERCEPTRONS MULTI-COUCHES
11
25template<class T, class U> class mlp: public net<T,U>
26{
27 public:
28
31
32 mlp(): net<T,U>() { _nc=0; _couch = (int*) NULL; }
39 mlp(const char *nom, int nc, int *couch)
40 :net<T,U>(nom,nc,couch)
41 { init(nom,nc,couch); }
42 mlp(const mlp<T,U> & pmc);
43
44 virtual ~mlp() { if(_couch!=NULL) delete[] _couch; }
45
47
50
53 virtual void init( const char *nom, int nc, int *couch);
54
56 virtual void empty();
58 virtual void aff() const;
64 virtual void add_neur(const char *nom, int c, T bia, T sor);
69 virtual int del_neur(int c, int no);
75 virtual int add_link(int c, int tar,int nli);
81 virtual int add_link(int c, int tar);
85 virtual int del_link(int c, int no);
90 virtual int add_le(int c, int tar, int co, int org, U w);
95 virtual int del_le(int c, int tar, int co, int org);
98 int get_neur(int c, int n)
99 { int x=0; for(int i=0; i<c; i++) x+=_couch[i]; return(x+n); }
100
102 int get_link(int c, int n)
103 { return(net<T,U>::get_link(get_neur(c,n))); }
104
108 virtual int trie();
114 virtual int load( const char *nom);
116 virtual int load( std::istream & fich );
124 virtual int prop(const pat<T> & pa, int n);
126 virtual int prop();
136 virtual int backprop(const pat<T> & pa, int nc, double eta, int flg=0,
137 T *err=NULL );
146 virtual T backprop( T *learnO, double eta );
148 virtual void ReductionIndex( int j );
152 virtual void Reduction();
154
157
158 int nc() const { return(_nc); }
160 int *couch() const { return(_couch); }
162
163
164 protected:
165
167 int _nc;
169 int *_couch;
170};
171
172
175
176template<class T, class U>
177inline std::ostream & operator << ( std::ostream & fich,
178 const mlp<T,U> & res );
180template<class T, class U>
181inline std::istream & operator >> ( std::istream & fich,
182 mlp<T,U> & res );
184
185#endif
186
Perceptron Multi-couches : classe mlp.
Definition mlp.h:26
virtual void empty()
Vidange du réseau.
int get_neur(int c, int n)
Numéro d'un neurone.
Definition mlp.h:98
virtual int add_link(int c, int tar, int nli)
Ajout d'une liaison.
virtual int prop(const pat< T > &pa, int n)
Fait fonctionner le réseau.
virtual ~mlp()
Definition mlp.h:44
virtual void aff() const
Affichage du contenu du réseau.
virtual int prop()
Propage les valeurs d'entrées (préalablemet positionnées)
virtual int del_link(int c, int no)
Elimination d'une liaison.
int get_link(int c, int n)
Numéro de liaison.
Definition mlp.h:102
mlp(const mlp< T, U > &pmc)
virtual int del_neur(int c, int no)
Elimination d'un neurone.
virtual int trie()
Trie du réseau.
virtual int add_le(int c, int tar, int co, int org, U w)
Ajoute un lien élémentaire.
int * _couch
Tableau des nombres de neurones par couche.
Definition mlp.h:169
mlp()
Réseau vide.
Definition mlp.h:32
virtual void Reduction()
Réduit pour un PMC à 3 couches.
int * couch() const
Tableau des nombres de neurones sur chaque couche.
Definition mlp.h:160
int nc() const
Nombre de couches.
Definition mlp.h:158
virtual void add_neur(const char *nom, int c, T bia, T sor)
Ajout d'un neurone.
virtual void ReductionIndex(int j)
Fait la réduction pour 1 neurone donné, j-ème de la couche cachée.
virtual int del_le(int c, int tar, int co, int org)
Elimination d'un lien élémentaire.
virtual void init(const char *nom, int nc, int *couch)
Initialisation du réseau.
mlp< T, U > & operator=(const mlp< T, U > &pmc)
virtual int load(std::istream &fich)
Charge le réseau à partir d'un stream déja ouvert.
virtual T backprop(T *learnO, double eta)
Apprentissage, 1 passe, à partir d'un état déjà propagé.
virtual int add_link(int c, int tar)
Ajout d'une liaison.
virtual int backprop(const pat< T > &pa, int nc, double eta, int flg=0, T *err=NULL)
Apprentissage.
virtual int load(const char *nom)
Charge le réseau.
mlp(const char *nom, int nc, int *couch)
Couches initialisées.
Definition mlp.h:39
int _nc
Nombre de couches.
Definition mlp.h:167
int no() const
Nombre de sorties.
Definition net.h:234
virtual void pmc(const char *nom, int nc, int *couch)
Initialise un Perceptron-Multi-Couches.
virtual int get_link(int tar)
Recherche d'une liaison.
net()
Réseau vide.
Base d'exemples : classe pat.
Definition pat.h:18
std::istream & operator>>(std::istream &fich, mlp< T, U > &res)
std::ostream & operator<<(std::ostream &fich, const mlp< T, U > &res)