1

Comment représente-t-on les nœuds dans un réseau de neurones à deux dimensions?représente nœud dans le réseau neuronal?

Dans les réseaux neuronaux auto-organisés (carte de Kohonen), comment le poids du nœud est-il lié à la coordination dans le réseau 2D? La carte s'auto-organise-t-elle en fonction de la coordonnée de l'emplacement ou du poids à cet endroit?

Je suis en train de mettre en oeuvre l'algorithme illustré ci-dessous en utilisant MPI

Localisation Distribué Algorithme: Entrée: N, le nombre de nœuds; G = (g_ij), la connaissance des plus proches voisins sortie: noeud positions p_i = (x_i,y_j), i,j = 1,......,N

// Initialization of the node locations 
    for all nodes i do 
    p_i = (x_i,y_j) = random(); 
    end for 

// Main Loop 
    for t = 1 to N_iter do 
    p = (x,y) = random() 
    for all network nodes i, update its location 
     for j=1 to N 
     x_i (t+1) = x_i (t) +α(t) δ_ij [x-x_i(t)] 
     y_i (t+1) = y_i (t) +α(t) δ_ij [y-y_i(t)] 
     for k=1 to N 
      for m=1 to N 
      tmp += g_km exp{ ||p-p_k||2 } exp{ ||p-p_m||2 } 
      end for 
     end for 
     δ_ij = g_ij exp{ ||p-p_i||2 } exp{ ||p-p_j||2 }/tmp 
     end for 
     end for 
    end for 
+0

ne peut pas comprendre ce code non formaté, mais essayez une liste liée 2D (ou tableau 2D). Vous devez propager les changements d'un neurone à l'autre de sorte que le tableau ou la liste soit approprié dans ce cas. Ou vous pouvez créer votre propre maillage en utilisant des listes. – Adrian

+0

S'il vous plaît corrigez-moi si je me trompe .. est donné noeud représenté par coordonnées en 2d ou poids à la coordonnée ..im un peu de perdu avec la notation: (( – Naga

+0

Donner répondu à la plupart de mes questions http: // stackoverflow.com/q/5926386/667664 – Naga

Répondre

1

Dans votre code, chaque noeud de neurone est désigné par paire (Xi, Yj). Je vous vois initialiser votre structure de données avec des valeurs aléatoires. Chaque nœud a au moins un poids et une paire de coordonnées. Les coordonnées donnent son emplacement; tandis que le poids donne sa valeur.

Pour tout cela en vaut la peine, vous pouvez créer votre propre infrastructure de données avec la méthode getNodeAt(x,y). Vous pouvez utiliser un tableau 2D ou une liste chaînée comme je l'ai déjà mentionné. Je ne suis pas sûr de la façon dont vous regrouperez les nœuds plus tard (il existe plusieurs types de réseaux de neurones), je vois une distribution de niveau par niveau dans votre code. Un peu comme les niveaux en largeur première recherche. La manière dont vous propagez les poids dans tout le réseau consiste à commencer à calculer les valeurs d'un nœud situé au niveau entrée/haut/début, puis à sauter aux voisins (niveau/niveau suivant). Vous avez les calculs aux lignes 6-8. Vous vous arrêtez aux nœuds de sortie/niveau inférieur.

+0

Merci beaucoup @ Adrian..J'apprécie vraiment votre aide.J'essaye de mettre en œuvre le concept de réseaux de neurones auto-organisants (carte de Kohonen) à cet algorithme Comment le poids de nœud de neurone s'intègre dans mon algorithme Ceci est la chose la plus déroutante pour moi Dans les étapes 6-8 dois-je mettre à jour le poids ou les coordonnées pour ce nœud? x_i (t+1) = x_i (t) +α(t) δ_ij [x-x_i(t)] y_i (t+1) = y_i (t) +α(t) δ_ij [y-y_i(t)] Naga

+0

@Naga Vous mettez à jour les poids des nœuds (poids du nœud pendant cette itération = le poids du nœud lors des itérations précédentes ET quelques calculs.Voir ce lien pour un très bel exemple: http: //en.wikipe dia.org/wiki/Self-organizing_map – Adrian