获取hextop自组织地图神经元连接

时间:2016-02-05 20:58:55

标签: matlab neural-network self-organizing-maps

如何获得包含SOM中神经元连接的n-by-2向量?例如,如果我有一个简单的2x2 hextop SOM,则连接向量应如下所示:

[ 1 2 1 3 1 4 ]

该向量表明神经元1与神经元2相连,神经元1与神经元3相连,等等。

如何从任何给定的SOM中检索此连接向量?

1 个答案:

答案 0 :(得分:1)

假设SOM定义为邻域距离1(即,对于每个神经元,欧几里德距离为1的所有神经元的边缘),Matlabs hextop(...)命令的默认选项,您可以创建您的连接向量如下:

pos = hextop(2,2);

% Find neurons within a Euclidean distance of 1, for each neuron.

% option A: count edges only once
distMat = triu(dist(pos));
[I, J] = find(distMat > 0 & distMat <= 1);
connectionsVectorA = [I J]

% option B: count edges in both directions
distMat = dist(pos);
[I, J] = find(distMat > 0 & distMat <= 1);
connectionsVectorB = sortrows([I J])

% verify graphically
plotsom(pos)

以上输出如下:

connectionsVectorA =

     1     2
     1     3
     2     3
     2     4
     3     4


connectionsVectorB =

     1     2
     1     3
     2     1
     2     3
     2     4
     3     1
     3     2
     3     4
     4     2
     4     3

如果您的SOM具有非默认邻域距离(!= 1),请说nDist,只需将上面的find(..)命令替换为

... find(distMat > 0 & distMat <= nDist);