1

如何表示二维神经网络中的节点?

在自组织神经网络(Kohonen 图)中,节点的权重与 2D 网络中的坐标有何关系。地图是否根据该位置的位置坐标或权重自组织。

我正在尝试使用 MPI 实现下面显示的算法

分布式定位算法:输入:N,节点数;G = (g_ij),最近邻的知识输出:节点位置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
4

1 回答 1

1

在您的代码中,每个神经元节点由对 (Xi,Yj) 表示。我看到你用随机值初始化你的数据结构。每个节点至少有一个权重和一对坐标。坐标给出了它的位置;而重量给出了它的价值。

尽管如此,您可以使用方法创建自己的数据结构getNodeAt(x,y)。正如我已经提到的,您可以使用二维数组或链表。

我不确定您以后如何对节点进行分组(有多种类型的神经网络),我在您的代码中看到了逐层分布。有点像广度优先搜索中的级别。

在整个网络中传播权重的方式是开始计算位于输入/顶部/开始级别的一个节点的值,然后跳转到邻居(即下一层/级别)。你有第 6-8 行的计算。您停在输出节点/底层。

于 2012-03-01T18:12:59.470 回答