拓扑函数用来确定神经元的排列形式,有六边形、网格形(矩形)、三角形及随机结构等,下面展开介绍。
1)gridtop函数
gridtop函数用于创建SOM神经网络中输出层的网格形拓扑结构,函数的调用格式如下:
pos=gridtop(dim1,dim2,…,dimN)
其中,输入参数dim1,dim2,…,dimN表示拓扑结构的维数,参数大小表示拓扑结构的形状大小,即gridtop(2,3,4)表示2×3×4的三维拓扑结构;返回参数pos表示由N个并列向量组成的N×S维的矩阵,S=dim1×dim2×… ×dimN。
2)hextop函数
hextop函数用于创建一个二维的六边形神经网络,函数的调用格式如下:
pos=hextop(dim1,dim2,…,dimN)
其中,输入参数dim1,dim2,…,dimN表示维数为N的层的长度;返回参数pos表示由N个并列向量组成的N×S维的矩阵,S=dim1×dim2×… ×dimN。
3)randtop函数
randtop函数用于创建一个二维的随机层神经网络,函数的调用格式如下:
pos=randtop (dim1,dim2,…,dimN)
4)tritop函数
tritop函数用于创建一个二维的三角形神经网络,函数的调用格式如下:
pos = tritop(dim1,dim2,…,dimN)
其中,神经元节点被安排在N维空间中,节点按三角形的形状排列。pos返回一个N×S维的矩阵,S=dim1×dim2×…×dimN。pos矩阵的每列表示一个网格节点的坐标。
【例8-23】利用4个拓扑结构函数分别建立对应的SOM神经网络。
程序实现代码如下:

>> clear all;
pos1 = gridtop([8 5]);
subplot(2,2,1);plotsom(pos1);
xlabel('第1行的i个神经元位置');ylabel('第2行的i个神经元位置');
title('网格拓扑结构');
pos2 = hextop([8 5]);
subplot(2,2,2);plotsom(pos2);
xlabel('第1行的i个神经元位置');ylabel('第2行的i个神经元位置');
title('六边形拓扑结构');
pos3 = randtop([8 5]);
subplot(2,2,3);plotsom(pos3)
xlabel('第1行的i个神经元位置');ylabel('第2行的i个神经元位置');
title('随机拓扑结构');
pos4 = tritop([8 5]);
subplot(2,2,4);plotsom(pos4);
xlabel('第1行的i个神经元位置');ylabel('第2行的i个神经元位置');
title('三角形拓扑结构');

神经网络拓扑结构 神经网络的拓扑结构_python

随机设定9个数据样本,这些样本分别表示9种不同特性的数据,设计一个SOM神经网络对不同特性的数据进行分类。
具体的实现步骤如下。
(1)用rand函数设定9个数据样本,然后进行网络设计及仿真:

>> clear all;
%设定样本数据
m=9;n=9;
P=rand(m,n);
for i=1:m
    for j=1:n
        if P(i,j)>0.8;
            P(i,j)=1;
        else
            P(i,j)=0;
        end
    end
end
%转置后符合神经网络的输入
P=P';
%建立SOM神经网络,竞争层为7×7=49个神经元
net=newsom(minmax(P),[7,7]);
plotsom(net.layers{1}.positions)

神经网络拓扑结构 神经网络的拓扑结构_python_02