代表神经网络中的节点?

时间:2012-03-01 16:34:47

标签: mpi parallel-processing neural-network self-organizing-maps

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

在自组织神经网络(Kohonen map)中,节点的权重如何与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

1 个答案:

答案 0 :(得分:1)

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

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

我不确定你以后如何对节点进行分组(有很多类型的神经网络),我在你的代码中看到了一层一层的分布。有点像广度搜索中的水平。

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