[C++] réseau de neurone hopfield
Résolu/Fermé
soumia
-
24 mai 2004 à 09:55
nnouhasabri Messages postés 6 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 15 avril 2016 - 8 avril 2016 à 12:55
nnouhasabri Messages postés 6 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 15 avril 2016 - 8 avril 2016 à 12:55
A voir également:
- [C++] réseau de neurone hopfield
- Entrer les informations d'identification reseau - Guide
- Un robot est sur le même réseau que vous - Forum Windows 10
- Cable reseau du player freebox - Forum Freebox
- Partage reseau - Guide
- CABLE RESEAU - FREEBOX ✓ - Forum Freebox
16 réponses
Salut moi y'a na pas savoir parler et moi ya na toujours pas envie de bosser alors moi toujours exiger des autres des réponses toutes faites...
Non mais je rêve!...
Non mais je rêve!...
Helas, pour les documents, ca va etre chaud : je suis a l'etranger, et j'ai pas d'acces internet chez moi... Aucun moyen de te refiler les docs, donc.
De toutes facons, l'aide de Matlab fait partie de Matlab, donc ce serait illegal ;)
Explication pour l'approche matricielle
ATTENTION, ca ne marche qu'avec les reseaux a couches !!!
(en +, c'est de memoire -> risques d'erreurs)
La premiere "couche" recoit les valeurs d'entree, considerees comme un vecteur V de taille Nv.
Qd tu veux passer a la premiere couche utile (cachee ou de sortie), C1 de taille N1, tu vas considerer une matrice des poids P1 (N1 lignes, Nv colonnes), et tu auras P1*V + B1 = C1 (/!\ a l'ordre !) ou B1 est un vecteur de taille N1, qui correspond au "biais" (terme additif qui permet de trouver des resultats coherents)
Les valeurs trouvees sont justes les valeurs d'entree de la couche, il faut ensuite les faire passer par une fonction de transfert (identite ou une sigmoide) => vecteur C1' et tu recommence pour la couche suivante...
Je crois que j'ai pas ete tres clair...
Pour l'apprentissage de base, je me souviens plus tres bien, donc je prefere ne pas te dire de betises (et j'ai pas trop le temps de rechercher aujourd'hui...)
J'espere que ca t'aidera a demarrer !
De toutes facons, l'aide de Matlab fait partie de Matlab, donc ce serait illegal ;)
Explication pour l'approche matricielle
ATTENTION, ca ne marche qu'avec les reseaux a couches !!!
(en +, c'est de memoire -> risques d'erreurs)
La premiere "couche" recoit les valeurs d'entree, considerees comme un vecteur V de taille Nv.
Qd tu veux passer a la premiere couche utile (cachee ou de sortie), C1 de taille N1, tu vas considerer une matrice des poids P1 (N1 lignes, Nv colonnes), et tu auras P1*V + B1 = C1 (/!\ a l'ordre !) ou B1 est un vecteur de taille N1, qui correspond au "biais" (terme additif qui permet de trouver des resultats coherents)
Les valeurs trouvees sont justes les valeurs d'entree de la couche, il faut ensuite les faire passer par une fonction de transfert (identite ou une sigmoide) => vecteur C1' et tu recommence pour la couche suivante...
Je crois que j'ai pas ete tres clair...
Pour l'apprentissage de base, je me souviens plus tres bien, donc je prefere ne pas te dire de betises (et j'ai pas trop le temps de rechercher aujourd'hui...)
J'espere que ca t'aidera a demarrer !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
24 mai 2004 à 12:53
24 mai 2004 à 12:53
Modéliste une neurone en objet d'après les règles de Hopfield,
faire une classe qui se charge de gérer les couches,
puis faire un programme qui va instancier plusieurs couches et lier les neurones entres elles.
C'est du génie logiciel de base.
Ta spec, c'est le modèle de hopfield.
A toi de réaliser...
faire une classe qui se charge de gérer les couches,
puis faire un programme qui va instancier plusieurs couches et lier les neurones entres elles.
C'est du génie logiciel de base.
Ta spec, c'est le modèle de hopfield.
A toi de réaliser...
Par contre, apres, il va falloir te taper tous les algos d'apprentissages (peut-etre qu'il y en a des simples, mais bon...)
Parce qu'un reseau de neurones qui n'apprend rien, c'est joli, mais limite...
d'ou mon conseil, si c'est juste pour UTILISER un reseau de neurones et si tu en as les moyens, y'a une boite a outils pas trop mal faite sous Matlab (par contre, la documentation est horrible !).
Parce qu'un reseau de neurones qui n'apprend rien, c'est joli, mais limite...
d'ou mon conseil, si c'est juste pour UTILISER un reseau de neurones et si tu en as les moyens, y'a une boite a outils pas trop mal faite sous Matlab (par contre, la documentation est horrible !).
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
24 mai 2004 à 17:17
24 mai 2004 à 17:17
Exact.
Il va également falloir faire apprendre le réseau.
Il te faudra donc construire des jeu d'apprentissage (avec tous les inputs + les sorties attendues).
Développer la back-propagation est assez pénible.
Si ton but n'est pas de développer toi-même des classes de réseaux de neurones mais de les utiliser, je te conseille d'utiliser des classes toutes prêtes.
La NASA a publié une bibliothèque sur les réseaux de neurones, gratuite et avec codes sources.
ça devrait largement te simplifier la tâche.
Il va également falloir faire apprendre le réseau.
Il te faudra donc construire des jeu d'apprentissage (avec tous les inputs + les sorties attendues).
Développer la back-propagation est assez pénible.
Si ton but n'est pas de développer toi-même des classes de réseaux de neurones mais de les utiliser, je te conseille d'utiliser des classes toutes prêtes.
La NASA a publié une bibliothèque sur les réseaux de neurones, gratuite et avec codes sources.
ça devrait largement te simplifier la tâche.
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
24 mai 2004 à 20:35
24 mai 2004 à 20:35
bon, j'ai developpé une librairie de reseaux de neurones en C++, mais je n'ai pas implementé les reseaux de hopfield (je n'ai implémenté pour le moment que le perceptron avec retropropagation avec momentum), par contre l'architecture est deja faite et il suffit juste d'implementer une classe abstraite, j'attends la fin de mes exams pour le peaufiner un peu plus et implémenter d'autres algos.
merci monsieur ,est ce que tu peux m'aider avec le peu que tu a fait avec le c++ "programmation du reseau de hopfield" merci
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
25 mai 2004 à 09:36
25 mai 2004 à 09:36
Ce que j'avais fait, c'était à l'université il y a un bout de temps, et on avait tout développé nous même (argleu).
Je ne crois pas avoir conservé les sources, désolé !
Je pense que tu trouvera des sources en Googlant.
Je ne crois pas avoir conservé les sources, désolé !
Je pense que tu trouvera des sources en Googlant.
Bonjour
Ta question est beaucoup trop génerale. Un réseau de Hopfied, c'est des unités reliées entre elles : les neurones. Don une approche naive est de creer des classes Neurones, Liens. Que mettre dedans comme code ? Ben ca dépend de ce que tu veut faire ton réseau. Tu veut analyser du son, de l'image ? J'ai travaillé avec tafiscobar sur le projet de réseau de neurone, il est spécialisé pour faire du traitement d'image. Et ce n'est pas un réseau de Hopfield mais un Perceptron.
Ta question est beaucoup trop génerale. Un réseau de Hopfied, c'est des unités reliées entre elles : les neurones. Don une approche naive est de creer des classes Neurones, Liens. Que mettre dedans comme code ? Ben ca dépend de ce que tu veut faire ton réseau. Tu veut analyser du son, de l'image ? J'ai travaillé avec tafiscobar sur le projet de réseau de neurone, il est spécialisé pour faire du traitement d'image. Et ce n'est pas un réseau de Hopfield mais un Perceptron.
Une autre idee, toujours en m'inspirant de Matlab :
Pour eux, un reseau de Hopfield n'est ni plus ni moins que du calcul matriciel : une succession d'additions et de multiplications de matrices, avec un calcul supplementaire pour chaque couche : le passage par la fonction de transfert.
Meme si tu dois coder ton propre reseau, tu peux toujours t'inspirer de cette approche...
N'hesite pas a demander + de renseignements...
Pour eux, un reseau de Hopfield n'est ni plus ni moins que du calcul matriciel : une succession d'additions et de multiplications de matrices, avec un calcul supplementaire pour chaque couche : le passage par la fonction de transfert.
Meme si tu dois coder ton propre reseau, tu peux toujours t'inspirer de cette approche...
N'hesite pas a demander + de renseignements...
salut monsieur merci beaucoup pour l'aide je travaile sur le reseau de hopfield ,j'ai besoin du documentation ,je vais utiliser ce reseau pour la classification des chromosomes humains c'est pour cette reseau je cherche à programmer ce reseau avec c++ merci
salut,monsieur javainaise,j'ai envoyé l'algorithme de hopfield comme vous avez demandé ,mais j'ai pas eu de répones jusqu'à maintenant merci
BOUNJOUR
j'ai besoin d'un aide pour programer un reseau de neurons à couche, mais je veux des programmes en c++ builder
j'ai besoin d'un aide pour programer un reseau de neurons à couche, mais je veux des programmes en c++ builder
nnouhasabri
Messages postés
6
Date d'inscription
vendredi 8 avril 2016
Statut
Membre
Dernière intervention
15 avril 2016
8 avril 2016 à 12:55
8 avril 2016 à 12:55
Bonjour je suis aussi intéresser par les sujet des réseaux de neurone et je désire avoir un programme simple sur la création d'un RN