如何表示二维神经网络中的节点?
在自组织神经网络(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
答案 0 :(得分:1)
在您的代码中,每个神经元节点由pair(Xi,Yj)表示。我看到你用随机值初始化你的数据结构。每个节点至少具有权重和一对坐标。坐标给出了它的位置;而重量则赋予其价值。
尽管如此,您可以使用方法getNodeAt(x,y)
创建自己的数据结构。您可以使用我已经提到过的2D数组或链表。
我不确定你以后如何对节点进行分组(有很多类型的神经网络),我在你的代码中看到了一层一层的分布。有点像广度搜索中的水平。
在整个网络中传播权重的方法是开始计算位于输入/顶部/开始级别的一个节点的值,然后跳转到邻居(即下一层/级别)。你有6-8行的计算。你停在输出节点/底层。