Neuron: neural networks


net.h
Go to the documentation of this file.
1
2
3#ifndef NEUR_NET_H
4#define NEUR_NET_H
5
6
7#include <neur/mlp/unit.h>
8#include <neur/mlp/link.h>
9#include <neur/mlp/pat.h>
10
11
12/* RESEAU DE NEURONES */
13
32template<class T, class U> class net
33{
34 public:
35
38
39 net();
47 net(const char *nom, int nu, int nl, int nac, int ni, int no, int fo,
48 int *tar, int *nli, int **ori)
49 { init(nom,nu,nl,nac,ni,no,fo,tar,nli,ori); }
50
57 net( const char *nom, int nc, int *couch )
58 { pmc(nom,nc,couch); }
59
65 net( const char *nom );
67 net(const net<T,U> & n);
68
70 virtual ~net();
72
75
93
96
100 virtual void init( const char *nom, int nu, int nl, int nac, int ni,
101 int no, int fo, int *tar, int *nli, int **ori);
102
104 virtual void empty();
106 virtual void aff() const;
114 virtual void add_neur( const char *nom, int typ, int xx, int yy, int zz,
115 T bia, T sor );
124 virtual int del_neur(int no);
130 virtual int add_link(int tar,int nli);
135 virtual int del_link(int no);
141 virtual int add_le(int tar,int org, U w);
147 virtual int del_le(int tar, int org);
152 virtual void pmc( const char *nom, int nc, int *couch);
159 virtual int load( const char *nom);
161 virtual int load( std::istream & fich );
166 virtual int save( const char *nom) const;
168 virtual int save( std::ostream & fich ) const;
170 virtual int get_neur( const unit<T> & u );
174 virtual int get_link(int tar);
178 virtual int prop(const pat<T> & pa, int n);
180 virtual int prop();
185 virtual void rand_w(U min, U max);
195 virtual int backprop(const pat<U> & pa, int nc, double eta, int flg=0,
196 T *err=NULL );
208 virtual void learn(int n, T dlt, double eta);
211 virtual int nlink(int ta)
212 { int n; if( (n=get_link(ta))<0 ) return(0); return(_l[n].nl()); }
213
216 virtual void af_out( int fl = 1 ) const;
218 virtual int bytesize() const;
220
223
224 const char *nm() const { return(_nm); }
226 int nu() const { return(_nu); }
228 int nl() const { return(_nl); }
230 int nac() const { return(_nac); }
232 int ni() const { return(_ni); }
234 int no() const { return(_no); }
236 int fo() const { return(_fo); }
238 unit<T> *u() const { return(_u); }
240 neur_link<U> *l() const { return(_l); }
242
243
244 protected:
245
248
250 virtual T learn_p(int ta, T dlt, double eta);
255 virtual int renum(int org, int ta);
257
260
261 char _nm[20];
263 int _nu;
265 int _nl;
267 int _nac;
269 int _ni;
271 int _no;
273 int _fo;
279};
280
281
284
285template<class T, class U>
286inline std::ostream & operator << ( std::ostream & fich,
287 const net<T,U> & res );
289template<class T, class U>
290inline std::istream & operator >> ( std::istream & fich,
291 net<T,U> & res );
293
294
295
296
297
298#endif
299
300
Réseau de neurones : classe net.
Definition net.h:33
net< T, U > operator+(const unit< T > &u)
Ajout d'un neurone.
virtual int add_link(int tar, int nli)
Ajoute une liaison.
virtual int nlink(int ta)
Nombre de liens.
Definition net.h:211
virtual void init(const char *nom, int nu, int nl, int nac, int ni, int no, int fo, int *tar, int *nli, int **ori)
Initialisation du réseau.
int fo() const
Numéro de la 1ère unité de sortie.
Definition net.h:236
int no() const
Nombre de sorties.
Definition net.h:234
int _nac
Nombre d'arrivées de connexions.
Definition net.h:267
net(const char *nom, int nc, int *couch)
Réseau à couches.
Definition net.h:57
virtual void pmc(const char *nom, int nc, int *couch)
Initialise un Perceptron-Multi-Couches.
virtual int backprop(const pat< U > &pa, int nc, double eta, int flg=0, T *err=NULL)
Apprentissage.
virtual void aff() const
Affichage du contenu du réseau.
virtual int prop()
Propage les valeurs d'entrées (préalablement positionnées)
virtual int load(std::istream &fich)
Lecture dans un stream déja ouvert.
net< T, U > operator-(const unit< T > &u)
Suppression d'un neurone.
net< T, U > & operator*(const net< T, U > &le)
char _nm[20]
Nom du réseau.
Definition net.h:261
unit< T > * u() const
Tableau des unités du réseau.
Definition net.h:238
virtual T learn_p(int ta, T dlt, double eta)
Apprentissage des poids d'une liaison.
net< T, U > & operator^(const net< T, U > &le)
net< T, U > & operator/(const net< T, U > &le)
int nac() const
Nombre d'arrivées de connexion (neur_links)
Definition net.h:230
virtual int bytesize() const
Calcule la taille du fichier de sauvegarde.
int _nl
Nombre de connexions.
Definition net.h:265
virtual void af_out(int fl=1) const
Affiche les sorties du reseau.
int nu() const
Nombre d'unités.
Definition net.h:226
int _nu
Nombre d'unités (de neurones)
Definition net.h:263
const char * nm() const
Nom du réseau.
Definition net.h:224
virtual int del_neur(int no)
Elimination d'un neurone.
virtual int renum(int org, int ta)
Réordonnancement du réseau.
neur_link< U > * l() const
Tableau des liaisons.
Definition net.h:240
virtual void empty()
Vidange du réseau.
net< T, U > & operator=(const net< T, U > &n)
Copie.
virtual int prop(const pat< T > &pa, int n)
Fait fonctionner le réseau.
virtual int save(std::ostream &fich) const
Ecriture dans un stream déja ouvert.
virtual int get_neur(const unit< T > &u)
Renvoie le numéro d'un neurone.
virtual int del_link(int no)
Elimination d'une liaison.
int nl() const
Nombre total de liens élémentaires.
Definition net.h:228
virtual void learn(int n, T dlt, double eta)
Apprentissage d'une liaison.
virtual int load(const char *nom)
Charge un réseau.
int _no
Nombre de sorties.
Definition net.h:271
net(const char *nom)
Lit un réseau dans un fichier.
net< T, U > & operator-=(const unit< T > &n)
Suppression d'un neurone.
virtual int save(const char *nom) const
Sauve le réseau sur disque.
neur_link< U > * _l
Tableau des connexions.
Definition net.h:277
unit< T > * _u
Tableau des neurones.
Definition net.h:275
net(const net< T, U > &n)
Constructeur de copie.
virtual ~net()
Destructeur.
virtual int del_le(int tar, int org)
Elimine un lien élémentaire.
int ni() const
Nombre d'entrées.
Definition net.h:232
net< T, U > & operator+=(const unit< T > &n)
Ajout d'un neurone.
virtual int add_le(int tar, int org, U w)
Ajout d'un lien élémentaire.
int _fo
Numéro de la 1ère sortie.
Definition net.h:273
virtual void rand_w(U min, U max)
Initialisation des poids.
net(const char *nom, int nu, int nl, int nac, int ni, int no, int fo, int *tar, int *nli, int **ori)
Réseau initialisé.
Definition net.h:47
int _ni
Nombre d'entrées.
Definition net.h:269
virtual int get_link(int tar)
Recherche d'une liaison.
net()
Réseau vide.
virtual void add_neur(const char *nom, int typ, int xx, int yy, int zz, T bia, T sor)
Ajout d'un neurone.
Base d'exemples : classe pat.
Definition pat.h:18
Unité : neurone de base, classe unit.
Definition unit.h:39
std::istream & operator>>(std::istream &fich, net< T, U > &res)
std::ostream & operator<<(std::ostream &fich, const net< T, U > &res)