|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--edu.esi.reseauxneuronaux.ReseauMulticouche
Cette classe modele un reseau neuronaux multi-couche. Vous pouvez decider tout la structure du reseau (combien des couches intermediare, combien des noeuds dans la couche d'entree/sortie/intermediares). Il utilise l'interface VecteurES (Vecteur Entree/Sortie) pour les entrees et sorties du reseau.
VecteurES
Constructor Summary | |
ReseauMulticouche(int numCouches,
int[] numNoeudsPerCouche,
boolean ajouteNoeudDePenchant)
Cree un nouveau reseau multi-couche avec le nombre des couche specifie. |
Method Summary | |
void |
forme(java.util.Vector vecteursEntree,
java.util.Vector vecteursSortie,
int numIterations)
Forme le reseau avec un Vector des entrees et un Vector des sorties. |
VecteurES |
getOutput()
Rend un VecteurES avec les valeurs courantes des noeuds dans la couche de la sortie. |
VecteurES |
reconnais(VecteurES entree)
Applique un vecteur a la couche de l'entree et calcule la production. |
java.lang.String |
toString()
Rend un String qui decrit la structure du reseau. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public ReseauMulticouche(int numCouches, int[] numNoeudsPerCouche, boolean ajouteNoeudDePenchant)
Par exemple:
int numCouches = 3; int[] numNoeudsPerCouche = { 16, 4, 2 }; ReseauMulticouche reseau = new ReseauMulticouche( numCouches, numNoeudsPerCouche, false);
Method Detail |
public void forme(java.util.Vector vecteursEntree, java.util.Vector vecteursSortie, int numIterations)
Importante:
La fonction forme() revient apres il a fini tous les iterations, ou apres l'erreur est suffisamment petite - quand la difference entre:
(les vecteurs de la sortie nous utilisons pour former le reseau)
et
(cela qui le reseau sort quand nous appliquons une des entrees de la
formation)
est moins qu'un point du percentage.
L'erreur est calculer avec une fonction du cout qui s'appelle "erreur somme - rendue carre". C'est:
Souvent, milliers des iterations sont exige pour former un grand reseau - tout depend de la structure du reseau et le nombre des des echantillons (si il y a beaucoup des enchantillons, c'est plus difficile pour ajuster les poids du reseau a accommoder tous les enchantillons). Vous pouvez mettre le nombre d'iterations a un grand nombre, parce que la fonction reviendra automatiquement quand l'erreur est suffisamment petite.
Aussi importante:
Il faut que l'element a l'index i dans les entrees correspond avec element i dans les sorties. Par exemple:
// Remarque: // reseau est cadre.longuer() pour la couche de l'entree et il y a // seulement un noeud dans la couche de la sortie (pour cette exemple) // Cree un Vector avec deux entrees - un pour un cadre qui represente un // enchantillon positif, et le deuxieme pour un cadre qui represente un // enchantillon negatif. Vector entrees = new Vector(2); entrees.addElement(cadrePositif); entrees.addElement(cadreNegatif); // Cree un Vector avec deux sorties qui corresponds aux indexes pour les // entrees (1.0 pour la premiere positif, 0.0 pour la deuxieme negatif). Vector sorties = new Vector(2); VecteurESDouble sortie = new VectorESDouble(2); sortie.addElement(new Double(1.0)); sortie.addElement(new Double(0.0)); sorties.addElement(sortie); // Regarde! entrees.elementAt(0) est couple avec sorties.elementAt(0) // et entrees.elementAt(1) est couple avec sorties.elementAt(1) // Maintenant, forme le reseau avec ces Vectors pour 400 iterations reseau.forme(entrees, sorties, 400);
public java.lang.String toString()
toString
in class java.lang.Object
public VecteurES reconnais(VecteurES entree)
getOutput()
public VecteurES getOutput()
reconnais(VecteurES)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |