Réseau de neurones : prêt à l'emploi

Soyez le premier à donner votre avis sur cette source.

Vue 11 123 fois - Téléchargée 1 667 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cigam
Messages postés
3
Date d'inscription
lundi 18 août 2003
Statut
Membre
Dernière intervention
22 avril 2004

Pour les commentaires j'ai rajouté un sujet du meme titre avec (BIS).
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.
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
meme sans commentaire je trouve ça genial de bosser sur ce genre de projet en vb, qui est un langage donc la syntaxe n'est pas forcement la plus clair (je penserai plus a du java ou du c) ;)

serieux, c super :)
je te met 9/10. -1 pour le manque de commentaire.
cuq
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Ha !et change le niveau de ta source met 3 , Si Si ca le vaut :))
cuq
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Bon ben c'est bien ce que je disais c'est surement génial mais a mon avis cette explication aurait du être dans le code source.

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
joshrbz
Messages postés
5
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
5 décembre 2003

Cuq : il est vrai que mon code est destiné à des gens qui connaissent un peu la théorie des réseaux de neurone.
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.