Neuron: neural networks


net< T, U > Class Template Reference

Réseau de neurones : classe net. More...

#include <neur/mlp/net.h>

Inheritance diagram for net< T, U >:
Collaboration diagram for net< T, U >:

Public Member Functions

Constructeurs - Destructeur
 net ()
 Réseau vide.
 
 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é.
 
 net (const char *nom, int nc, int *couch)
 Réseau à couches.
 
 net (const char *nom)
 Lit un réseau dans un fichier.
 
 net (const net< T, U > &n)
 Constructeur de copie.
 
virtual ~net ()
 Destructeur.
 
Opérateurs
net< T, U > & operator= (const net< T, U > &n)
 Copie.
 
net< T, U > operator+ (const unit< T > &u)
 Ajout d'un neurone.
 
net< T, U > operator+ (const neur_link< U > &l)
 Ajout d'une connexion.
 
net< T, U > operator- (const unit< T > &u)
 Suppression d'un neurone.
 
net< T, U > & operator* (const net< T, U > &le)
 
net< T, U > & operator/ (const net< T, U > &le)
 
net< T, U > & operator^ (const net< T, U > &le)
 
net< T, U > & operator+= (const unit< T > &n)
 Ajout d'un neurone.
 
net< T, U > & operator+= (const neur_link< U > &l)
 Ajout d'une connexion.
 
net< T, U > & operator-= (const unit< T > &n)
 Suppression d'un neurone.
 
Accès aux membres
const char * nm () const
 Nom du réseau.
 
int nu () const
 Nombre d'unités.
 
int nl () const
 Nombre total de liens élémentaires.
 
int nac () const
 Nombre d'arrivées de connexion (neur_links)
 
int ni () const
 Nombre d'entrées.
 
int no () const
 Nombre de sorties.
 
int fo () const
 Numéro de la 1ère unité de sortie.
 
unit< T > * u () const
 Tableau des unités du réseau.
 
neur_link< U > * l () const
 Tableau des liaisons.
 

Protected Attributes

Champs
char _nm [20]
 Nom du réseau.
 
int _nu
 Nombre d'unités (de neurones)
 
int _nl
 Nombre de connexions.
 
int _nac
 Nombre d'arrivées de connexions.
 
int _ni
 Nombre d'entrées.
 
int _no
 Nombre de sorties.
 
int _fo
 Numéro de la 1ère sortie.
 
unit< T > * _u
 Tableau des neurones.
 
neur_link< U > * _l
 Tableau des connexions.
 

Fonctions

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.
 
virtual void empty ()
 Vidange du réseau.
 
virtual void aff () const
 Affichage du contenu du réseau.
 
virtual void add_neur (const char *nom, int typ, int xx, int yy, int zz, T bia, T sor)
 Ajout d'un neurone.
 
virtual int del_neur (int no)
 Elimination d'un neurone.
 
virtual int add_link (int tar, int nli)
 Ajoute une liaison.
 
virtual int del_link (int no)
 Elimination d'une liaison.
 
virtual int add_le (int tar, int org, U w)
 Ajout d'un lien élémentaire.
 
virtual int del_le (int tar, int org)
 Elimine un lien élémentaire.
 
virtual void pmc (const char *nom, int nc, int *couch)
 Initialise un Perceptron-Multi-Couches.
 
virtual int load (const char *nom)
 Charge un réseau.
 
virtual int load (std::istream &fich)
 Lecture dans un stream déja ouvert.
 
virtual int save (const char *nom) const
 Sauve le réseau sur disque.
 
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 get_link (int tar)
 Recherche d'une liaison.
 
virtual int prop (const pat< T > &pa, int n)
 Fait fonctionner le réseau.
 
virtual int prop ()
 Propage les valeurs d'entrées (préalablement positionnées)
 
virtual void rand_w (U min, U max)
 Initialisation des poids.
 
virtual int backprop (const pat< U > &pa, int nc, double eta, int flg=0, T *err=NULL)
 Apprentissage.
 
virtual void learn (int n, T dlt, double eta)
 Apprentissage d'une liaison.
 
virtual int nlink (int ta)
 Nombre de liens.
 
virtual void af_out (int fl=1) const
 Affiche les sorties du reseau.
 
virtual int bytesize () const
 Calcule la taille du fichier de sauvegarde.
 
virtual T learn_p (int ta, T dlt, double eta)
 Apprentissage des poids d'une liaison.
 
virtual int renum (int org, int ta)
 Réordonnancement du réseau.
 

Detailed Description

template<class T, class U>
class net< T, U >

Réseau de neurones : classe net.

\ \ template<class T, class U> class net; \ \ Cette classe regroupe les cellules et les liaisons en un réseau de neurones complet. Deux types de données sont à préciser: T est utilisé pour les entrées, sorties et biais des neurones, et U pour les poids. On utilise deux types distincts car on peut très bien construire un réseau à valeurs discrètes (ou binaires) mais dont les poids des connexions sont réels. Toutes les fonctions pour manipuler les réseaux (chargement, sauvegarde, propagation, apprentissage, modification) sont fournies parmi les méthodes de la classe. Les caractéristiques d'un réseau sont: son nom (nm), son nombre d'unités (nu), son nombre de connexions (nl) (nombre total de liaisons élémentaires), son nombre d'arrivées de connexions (nac) (nombre de liaisons de type neur_link;), son nombre d'entrées (ni) et de sorties (no) ainsi que le numéro de la 1ère unité de sortie dans la liste des neurones (fo), et la liste des unités (u) et des liaisons (l).

Definition at line 32 of file net.h.

Constructor & Destructor Documentation

◆ net() [1/5]

◆ net() [2/5]

template<class T, class U>
net< T, U >::net ( const char * nom,
int nu,
int nl,
int nac,
int ni,
int no,
int fo,
int * tar,
int * nli,
int ** ori )
inline

Réseau initialisé.

\ Initialise toutes les valeurs du réseau: tar est un tableau contenant la liste des cibles des liaisons, nli est un tableau contenant la liste des nombres de liens élémentaires de ces liaisons, et ori est un tableau à double entrée qui contient, pour chaque liaison, la liste des origines des liens élémentaires.

Definition at line 47 of file net.h.

References fo(), init(), nac(), ni(), nl(), no(), and nu().

◆ net() [3/5]

template<class T, class U>
net< T, U >::net ( const char * nom,
int nc,
int * couch )
inline

Réseau à couches.

\ Crée un réseau de type Perceptron Multi-Couches, de nom nom, de nc couches, avec sur chaque couche le nombre de neurones donné par le tableau couch. chaque neurone d'une couche donnée est relié à l'ensemble des neurones de la couche précédente en entrée, et à l'ensemble des neurones de la couche suivante en sortie.

Definition at line 57 of file net.h.

References pmc().

◆ net() [4/5]

template<class T, class U>
net< T, U >::net ( const char * nom)

Lit un réseau dans un fichier.

\ Lit le réseau dans un fichier de nom nom. Le fichier doit être au format SNNS, le réseau ne doit pas avoir de sites, et les fonctions d'activation sont de type Act_Logistic (sigmoïde). Les neurones et les liaisons sont repris dans l'ordre du fichier.

◆ net() [5/5]

template<class T, class U>
net< T, U >::net ( const net< T, U > & n)

Constructeur de copie.

References net().

◆ ~net()

template<class T, class U>
virtual net< T, U >::~net ( )
virtual

Destructeur.

Member Function Documentation

◆ add_le()

template<class T, class U>
virtual int net< T, U >::add_le ( int tar,
int org,
U w )
virtual

Ajout d'un lien élémentaire.

\ Ajoute un lien élémentaire du neurone or vers le neurone tar, avec un poids initialisé à w. Si la liaison arrivant en tar n'existe pas, il faut la créer auparavant. Renvoie 0 en cas de succès.

◆ add_link()

template<class T, class U>
virtual int net< T, U >::add_link ( int tar,
int nli )
virtual

Ajoute une liaison.

\ Ajoute une liaison au réseau, de cible tar. Cette liaison possèdera nli liens élémentaires (qu'il faudra ensuite initialiser). La fonction renvoie 0 en cas de réussite (le neurone tar existe).

Reimplemented in mlp< T, U >.

◆ add_neur()

template<class T, class U>
virtual void net< T, U >::add_neur ( const char * nom,
int typ,
int xx,
int yy,
int zz,
T bia,
T sor )
virtual

Ajout d'un neurone.

\ Ajoute un neurone au réseau, de nom nom, de type typ (0: entrée, 1: caché, 2: sortie), à la position (x, y, z), ayant le biais initialisé à bia et la sortie à sor. Le neurone est ajouté en fin de liste (plus grand numéro). Le nouveau neurone n'est pas connecté, il faut ensuite ajouter les liaisons.

◆ af_out()

template<class T, class U>
virtual void net< T, U >::af_out ( int fl = 1) const
virtual

Affiche les sorties du reseau.

\ Affiche les sorties du réseau. Ne précise les numéros et noms des cellules que si fl est non nul.

◆ aff()

template<class T, class U>
virtual void net< T, U >::aff ( ) const
virtual

Affichage du contenu du réseau.

Reimplemented in mlp< T, U >.

◆ backprop()

template<class T, class U>
virtual int net< T, U >::backprop ( const pat< U > & pa,
int nc,
double eta,
int flg = 0,
T * err = NULL )
virtual

Apprentissage.

\ Effectue l'apprentissage du réseau par l'algorithme de rétropropagation du gradient classique. Pour cela la base d'exemple pa est utilisée. nc cycles d'apprentissage sont effectués sur toute la base d'apprentissage. A chaque cycle, l'ordre de passage des exemples est tiré au sort. eta est le coefficient de modification des poids appliqué au gradient. flg précise s'il faut (flg!=0) ou non (flg=0) afficher où l'apprentissage en est tous les dixièmes du nombre de cycles.

◆ bytesize()

template<class T, class U>
virtual int net< T, U >::bytesize ( ) const
virtual

Calcule la taille du fichier de sauvegarde.

◆ del_le()

template<class T, class U>
virtual int net< T, U >::del_le ( int tar,
int org )
virtual

Elimine un lien élémentaire.

\ Efface un lien élémentaire du neurone or vers le neurone tar. Si la liaison vers tar n'a plus de liens élémentaires, elle est supprimée. Renvoie 0 si tout se passe bien.

◆ del_link()

template<class T, class U>
virtual int net< T, U >::del_link ( int no)
virtual

Elimination d'une liaison.

\ Efface une liaison, de cible tar, avec les liens élémentaires qu'elle contient. Renvoie 0 en cas de réussite.

References no().

◆ del_neur()

template<class T, class U>
virtual int net< T, U >::del_neur ( int no)
virtual

Elimination d'un neurone.

\ Enlève un neurone du réseau, de numéro no dans la liste des neurones. Les liaisons qui le concernent sont également effacées. Les neurones suivants dans la liste sont translatés, donc leur numéro est décrémenté, mais les liaisons sont remises à jour automatiquement. La fonction renvoie 0 en cas de réussite (si le neurone en question existe effectivement).

References no().

◆ empty()

template<class T, class U>
virtual void net< T, U >::empty ( )
virtual

Vidange du réseau.

Reimplemented in mlp< T, U >.

◆ fo()

template<class T, class U>
int net< T, U >::fo ( ) const
inline

Numéro de la 1ère unité de sortie.

Definition at line 236 of file net.h.

References _fo.

Referenced by init(), and net().

◆ get_link()

template<class T, class U>
virtual int net< T, U >::get_link ( int tar)
virtual

Recherche d'une liaison.

\ Renvoie le numéro de la liaison vers le neurone tar. Renvoie -1 si cette liaison n'existe pas.

Referenced by mlp< T, U >::get_link(), and nlink().

◆ get_neur()

template<class T, class U>
virtual int net< T, U >::get_neur ( const unit< T > & u)
virtual

Renvoie le numéro d'un neurone.

References u().

◆ init()

template<class T, class U>
virtual void net< T, U >::init ( const char * nom,
int nu,
int nl,
int nac,
int ni,
int no,
int fo,
int * tar,
int * nli,
int ** ori )
virtual

Initialisation du réseau.

\ Initialise le réseau comme pour le constructeur correspondant. Cette fonction ne désalloue pas d'éventuelles définitions précédentes !

References fo(), nac(), ni(), nl(), no(), and nu().

Referenced by net().

◆ l()

template<class T, class U>
neur_link< U > * net< T, U >::l ( ) const
inline

Tableau des liaisons.

Definition at line 240 of file net.h.

References _l.

Referenced by operator+(), and operator+=().

◆ learn()

template<class T, class U>
virtual void net< T, U >::learn ( int n,
T dlt,
double eta )
virtual

Apprentissage d'une liaison.

\ effectue les modifications de poids sur une liaison particulière arrivant en tar. Les poids de chaque liaison élémentaire arrivant en tar seront donc modifiés de: \ eta * dlt * f'(entrée totale) * entrée particulière : \ entrée particulière est la sortie du neurone à l'origine du lien élémentaire considéré, entrée totale est la somme pondérée de toutes les entrées de tar. f' est la dérivée de la fonction d'activation (sigmoïde). Pour ce faire, l'état du réseau doit avoir été préalablement calculé (à l'aide de prop() par exemple).

◆ learn_p()

template<class T, class U>
virtual T net< T, U >::learn_p ( int ta,
T dlt,
double eta )
protectedvirtual

Apprentissage des poids d'une liaison.

\ Cette fonction est utilisée par backprop()# et learn()#.

◆ load() [1/2]

template<class T, class U>
virtual int net< T, U >::load ( const char * nom)
virtual

Charge un réseau.

\ Charge le réseau à partir d'un fichier de nom "nom". Le format est celui des fichiers SNNS, avec les mêmes restrictions que pour le constructeur correspondant. Cette fonction ne désalloue pas d'éventuelles définitions précédentes !

Reimplemented in mlp< T, U >.

◆ load() [2/2]

template<class T, class U>
virtual int net< T, U >::load ( std::istream & fich)
virtual

Lecture dans un stream déja ouvert.

Reimplemented in mlp< T, U >.

◆ nac()

template<class T, class U>
int net< T, U >::nac ( ) const
inline

Nombre d'arrivées de connexion (neur_links)

Definition at line 230 of file net.h.

References _nac.

Referenced by init(), and net().

◆ ni()

template<class T, class U>
int net< T, U >::ni ( ) const
inline

Nombre d'entrées.

Definition at line 232 of file net.h.

References _ni.

Referenced by init(), and net().

◆ nl()

template<class T, class U>
int net< T, U >::nl ( ) const
inline

Nombre total de liens élémentaires.

Definition at line 228 of file net.h.

References _nl.

Referenced by init(), net(), and nlink().

◆ nlink()

template<class T, class U>
virtual int net< T, U >::nlink ( int ta)
inlinevirtual

Nombre de liens.

\ Retourne le nombre de liens élémentaires arrivant en ta.

Definition at line 211 of file net.h.

References _l, get_link(), and nl().

◆ nm()

template<class T, class U>
const char * net< T, U >::nm ( ) const
inline

Nom du réseau.

Definition at line 224 of file net.h.

References _nm.

◆ no()

template<class T, class U>
int net< T, U >::no ( ) const
inline

Nombre de sorties.

Definition at line 234 of file net.h.

References _no.

Referenced by mlp< T, U >::del_link(), del_link(), mlp< T, U >::del_neur(), del_neur(), init(), and net().

◆ nu()

template<class T, class U>
int net< T, U >::nu ( ) const
inline

Nombre d'unités.

Definition at line 226 of file net.h.

References _nu.

Referenced by init(), and net().

◆ operator*()

template<class T, class U>
net< T, U > & net< T, U >::operator* ( const net< T, U > & le)

References net().

◆ operator+() [1/2]

template<class T, class U>
net< T, U > net< T, U >::operator+ ( const neur_link< U > & l)

Ajout d'une connexion.

References l(), and net().

◆ operator+() [2/2]

template<class T, class U>
net< T, U > net< T, U >::operator+ ( const unit< T > & u)

Ajout d'un neurone.

References net(), and u().

◆ operator+=() [1/2]

template<class T, class U>
net< T, U > & net< T, U >::operator+= ( const neur_link< U > & l)

Ajout d'une connexion.

References l(), and net().

◆ operator+=() [2/2]

template<class T, class U>
net< T, U > & net< T, U >::operator+= ( const unit< T > & n)

Ajout d'un neurone.

References net().

◆ operator-()

template<class T, class U>
net< T, U > net< T, U >::operator- ( const unit< T > & u)

Suppression d'un neurone.

References net(), and u().

◆ operator-=()

template<class T, class U>
net< T, U > & net< T, U >::operator-= ( const unit< T > & n)

Suppression d'un neurone.

References net().

◆ operator/()

template<class T, class U>
net< T, U > & net< T, U >::operator/ ( const net< T, U > & le)

References net().

◆ operator=()

template<class T, class U>
net< T, U > & net< T, U >::operator= ( const net< T, U > & n)

Copie.

References net().

◆ operator^()

template<class T, class U>
net< T, U > & net< T, U >::operator^ ( const net< T, U > & le)

References net().

◆ pmc()

template<class T, class U>
virtual void net< T, U >::pmc ( const char * nom,
int nc,
int * couch )
virtual

Initialise un Perceptron-Multi-Couches.

\ Initialise le réseau en tant que Perceptron Multi-Couches. cf constructeur correspondant. Cette fonction ne désalloue pas d'éventuelles définitions précédentes !

Referenced by mlp< T, U >::mlp(), net(), and mlp< T, U >::operator=().

◆ prop() [1/2]

template<class T, class U>
virtual int net< T, U >::prop ( )
virtual

Propage les valeurs d'entrées (préalablement positionnées)

Reimplemented in mlp< T, U >.

◆ prop() [2/2]

template<class T, class U>
virtual int net< T, U >::prop ( const pat< T > & pa,
int n )
virtual

Fait fonctionner le réseau.

\ Propage l'exemple numéro n de la base d'exemples pa à travers le réseau. Renvoie 0 en cas de succès.

Reimplemented in mlp< T, U >.

◆ rand_w()

template<class T, class U>
virtual void net< T, U >::rand_w ( U min,
U max )
virtual

Initialisation des poids.

\ Initialise tous les poids du réseau aléatoirement, avec des valeurs comprises entre min et max (répartition uniforme de probabilités).

◆ renum()

template<class T, class U>
virtual int net< T, U >::renum ( int org,
int ta )
protectedvirtual

Réordonnancement du réseau.

\ Remet en ordre toutes les cellules et toutes les liaisons de manière à l'organiser en couches de propagation des entrées vers les sorties.

◆ save() [1/2]

template<class T, class U>
virtual int net< T, U >::save ( const char * nom) const
virtual

Sauve le réseau sur disque.

\ Sauvegarde le réseau dans un fichier de nom nom, sous le format SNNS. On peut par la suite reprendre ce réseau avec le logiciel SNNS.

◆ save() [2/2]

template<class T, class U>
virtual int net< T, U >::save ( std::ostream & fich) const
virtual

Ecriture dans un stream déja ouvert.

◆ u()

template<class T, class U>
unit< T > * net< T, U >::u ( ) const
inline

Tableau des unités du réseau.

Definition at line 238 of file net.h.

References _u.

Referenced by get_neur(), operator+(), and operator-().

Member Data Documentation

◆ _fo

template<class T, class U>
int net< T, U >::_fo
protected

Numéro de la 1ère sortie.

Definition at line 273 of file net.h.

Referenced by fo().

◆ _l

template<class T, class U>
neur_link<U>* net< T, U >::_l
protected

Tableau des connexions.

Definition at line 277 of file net.h.

Referenced by l(), and nlink().

◆ _nac

template<class T, class U>
int net< T, U >::_nac
protected

Nombre d'arrivées de connexions.

Definition at line 267 of file net.h.

Referenced by nac().

◆ _ni

template<class T, class U>
int net< T, U >::_ni
protected

Nombre d'entrées.

Definition at line 269 of file net.h.

Referenced by ni().

◆ _nl

template<class T, class U>
int net< T, U >::_nl
protected

Nombre de connexions.

Definition at line 265 of file net.h.

Referenced by nl().

◆ _nm

template<class T, class U>
char net< T, U >::_nm[20]
protected

Nom du réseau.

Definition at line 261 of file net.h.

Referenced by nm().

◆ _no

template<class T, class U>
int net< T, U >::_no
protected

Nombre de sorties.

Definition at line 271 of file net.h.

Referenced by no().

◆ _nu

template<class T, class U>
int net< T, U >::_nu
protected

Nombre d'unités (de neurones)

Definition at line 263 of file net.h.

Referenced by nu().

◆ _u

template<class T, class U>
unit<T>* net< T, U >::_u
protected

Tableau des neurones.

Definition at line 275 of file net.h.

Referenced by u().


The documentation for this class was generated from the following file: