Voici 3 classes VB (facilement transposables en un autre langage) qui permettent de manipuler un réseau de neurone : la classe clsMatrix permet de modéliser les composantes du réseau (clsNeuralNetwork) et sert aussi à représenter le vecteur d'entrée (stimulus) et le vecteur de sortie. La classe clsProfessor est la classe principale qui crée le réseau, lui apprends à reconnaitre et le stimule.
Je donne avec un exemple d'utilisation pour la reconnaissance de caractères :
- un vecteur de 64 points en entrée correspondant à un caractère de 8*8 pixels avec les valeurs 0 pour vide et 1 pour plein.
- Un vecteur de sortie de 26 points correspondant aux 26 lettres de l'alphabet.
J'ai testé avec deux caractères : apprentissage sur 5000 stimulus (Learn) puis test de reconnaissance (Think).
Il manque : les fonctions de Load/Save des neurones du réseau afin qu'il ne perde pas la mémoire !!!!!
Sinon, je vous laisse imaginer d'autres applications
Have Fun..
joshrbz@yahoo.fr
21 avril 2004 à 16:18
C vrai que sans commentaires il faut bien connaitre le principe des reseaux de neurones pour comprendre. Sinon il tourne nikel !
Merci pour ce code Joshrbz, c'est exactement ce que je cherchais.
6 déc. 2003 à 12:44
serieux, c super :)
je te met 9/10. -1 pour le manque de commentaire.
5 déc. 2003 à 17:06
5 déc. 2003 à 17:04
Et si tu veux que le code intéresse ou éveil un intéret chez les utilisateurs du site il serait d'avoir une appli un peu plus "SEX"
Autres remarques tu trouveras sur des sites anglais "Foultitude" de code qui font la même chose :
Par exemple :
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=22932&lngWId=1
Et là tu as une vraie application de reconnaissance de charactère avec réseau neuronnaux . La ca donne envie
Note Je comprend pas plus comment ca marche mais bon c'est balaise .... Enfin c'est balaise pour moi :)
Allez Have Fun
5 déc. 2003 à 16:31
Pars de la classe clsProfessor et en regardant le code, tu vas piger.
En deux mots : C'est une succession de matrices et de vecteurs (appellées couches) qui à partir d'un vecteur d'entrée (appellé stimulus) propage le signal dans les couches et envoie un signal de sortie (sous forme d'un vecteur ici également).
Le vecteur d'entrée est une numérisation de ton stimulus à reconnaitre ; exemple : un caractère de 8*8 numérisé en un vecteur de 64 points.
Le signal de sortie est un vecteur de 26 valeurs comprises entre 0 et 1. Le point (ou neurone) ayant la valeur la plus proche de 1 est sensé être celui reconnu par le réseau.
L'apprentissage consiste à dire au réseau : si je t'envoie un vecteur représentant un A, tu dois allumer le neurone de sortie numero 1, si B, sortie 2 etc...
L'apprentissage ajuste les valeurs des matrices au sein du réseau jusqu à trouver un équilibre.
Ensuite, l'intérêt est que même si tu déformes un peu ton A dans le vecteur d'entrée (qui peut provenir d'un magazine scanné par exemple) , le réseau peut le reconnaître à 80% ou 90%.
Ex : Voici un I en 8*8
. . . O . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
Voici un I en 8*8 bruité :
. . . O . . .
. . . .O . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. . . .
. . . O. .O. .
. . O.. . . .
Understand ?
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.