Reseau de neurones : ne veut pas apprendre ; Paramétrage

Reseau de neurones : ne veut pas apprendre ; Paramétrage - Divers - Programmation

Marsh Posté le 02-09-2009 à 08:54:45    

Bonjour,
Voici mon réseau :  
Entrée_1 : 60,     0,  60,      0
Sortie_1  : 36, 100,  43, 100
Entrée_1 : 36,  100, 43, 100
Sortie_1  : 36,       0,  43,     0
Entrée_1 : 36,       0,  43,     0
Sortie_1  : 38, 100,  43, 100
Entrée_1 : 38, 100,  43, 100
Sortie_1  : 38,      0,  43,      0
Entrée_1 : 38,     0,   43,      0
Sortie_1  : 60,      0,  60,      0
 
Dans les paramètres du réseau j'ai

Code :
  1. Thinning_Active             : Boolean := True;
  2.  
  3.      -- Network parameters
  4.      Beta : Positive_Real := 0.1; -- Learning rate; 0.1 has always been satisfactory so far
  5.  
  6.      -- Recursive means' characteristic lengths:
  7.      P : Positive_Real := 16.0 * Real'Max (Real'Max (Real (Num_Patterns), Real (Num_Input_Nodes) ), Real (Num_Output_Nodes) );
  8.        -- P controls error & denominator of learning rule
  9.      Q : Positive_Real := 0.25 * P; -- Momentum
  10.      R : Positive_Real := Q; -- Transition of desired output
  11.      S : Positive_Real := 4.0 * P; -- G, for thinning
  12.  
  13.      -- Power-law recursive means: the corresponding recursive mean will change from an exponential to power-law mean when
  14.      -- the parameter * current experience # > corresponding parameter:
  15.      K_P : Natural_Real := 0.0; -- P
  16.      K_Q : Natural_Real := 0.0; -- Q
  17.      K_S : Natural_Real := 0.0; -- S
  18.  
  19.      -- Thinning parameters:
  20.      Ec       : Natural_Real := 0.001; -- A connection will be inactivated when its G value < Ec
  21.      Delta_Ec : Natural_Real := 0.001; -- A connection will be reactivated when its G value > Ec + Delta_Ec
  22.  
  23.      -- Random ranges: Random values will be selected from the range -X .. X, where X is one of:
  24.      Random_Weight_Range : Natural_Real := 0.1; -- Initial values for weights
  25.      Random_E_Star_Range : Natural_Real := 0.001; -- If > 0, the network will add random noise to E*
  26.      Random_H_Star_Range : Natural_Real := 0.001; -- Ditto


 
Que puis-je utiliser comme paramètre pour faire avancer le schmilbick ?
S'il vous plais, merci.


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 02-09-2009 à 08:54:45   

Reply

Marsh Posté le 02-09-2009 à 09:02:38    

j'ai oublié de préciser que les valeur données pour données du réseau sont en fait converti en octets puit chaque bit en un réel. C'est à dire que le réseau fait 32 bits de large positionnés à 1.0 ou 0.0.


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 02-09-2009 à 14:57:22    

Pouvez-vous être plus spécifique ?  
Il manque des informations d'importances en premier lieux, le type de réseaux (rétro-propagation, Kohonen ...). On devine que c'est de la rétroprop mais c'est pas évident. Ensuite il me semble que vous devez utiliser une librairie pré-existante, quelle est elle ?  
 
Les données en entrée sont également nécessaires pour répondre.
 
Best Regards,
B.


---------------
Speaking ChatBot Widget Automatic Unique Content & Comment Robot Forex Tick Data
Reply

Marsh Posté le 02-09-2009 à 15:41:18    

Bonjour, j'utilise la lib PragmARC.REM_NN_Wrapper écrite avec Ada.
 
Le réseau  fait 32 bits de large pour les couches d'entrée et sorties avec une couche caché de 4 neurones.
Je ne comprend  pourquoi vous me demander les donnée en entrée... Vous parlez des donnée lors de l'exploitation...? Ce sont celles données en entrées lors de l'apprentissage.


Message édité par The matrix le 02-09-2009 à 16:01:07

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 02-09-2009 à 16:41:29    

Ca y est ça remarche... Une erreur d'index dans la lecture du fichier de donnée.  :(  


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 03-12-2009 à 19:35:24    

Yep, bonjour,
 
je réutilise ce topic car j'ai à nouveau un problème d'apprentissage avec un RdN.
 
Le projet est écrit avec Ada, il s'agit de la même bibliothèque fournissant le réseau, Pargmarc-REM_NN_Wrapper.
 
Les problèmes sont que :
 - RMS_Error augmente dans un premier temps pour baisser en suite.
 - RMS_Error baisse graduellement mais non sensiblement.
 
Notes : il me semble qu'il y a une erreur résiduelle. Mais j'y comprend plus rien à cette heure ci.
 
Voila. j'ai fait un petit zip des sources écrite pour Windows hébergé chez toofiles.com... Ici => http://www.toofiles.com/fr/oip/doc [...] rardi.html
 
Si vous aviez un peu de temps et pas mal de patience ... Le code ne comporte aucun commentaire.
 
Le projet consiste en un dictionnaire constitué dans un arbre binaire : le fichier Lexique-355.txt (DOS encoded)
un fichier d'entrainement train.txt (pardon pour le contenu)
en suite chaque mot du dictionnaire étant indexé de 1 à N<150_000 est codé sur M valeurs prenant 0.0 ou 1.0, M dépendant du nombre de mot max contenu dans le dictionnaire.
le réseau de neurone traite les mots codés.
 
Merci pour votre aide.
 
 

Reply

Marsh Posté le 03-12-2009 à 20:40:46    

Yep,
 
J'ai trouvé.... Dans generic_extended_binary_code.adb:ligne 29 ::=  Code(index) := 0.0; -- et non -1.0;
en suite si vous voulez des corrections.. dans warch.adb:
 
- ligne 214:= Code := T_Code(Register(T_Code'Length * I + 1..T_Code'Length * I + T_Code'Length));
- ligne 38 :=  Train_Length : natural := 0;
 
Merci  :hello:

Reply

Marsh Posté le 03-12-2009 à 22:19:14    

Je vois qu'il y a encore des téléchargement.
Alors, pour vous dire...
1) remplacer toute les occurances de 16 dans main par max_words_by_sentence et fixez ce nombre en fonction de la largeur de votre fichier d'entrainement (ici environ 6 -> 10)
 
2) la déclaration du paquetage NN_response doit être déplacer dans un bloc declare/begin/end après la sauvgarde du réseau après entrainement. Si non, le paquetage ne trouve pas le fichier de réseau.
 
De rien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed