Main Content

一维自组织映射

二维层中的神经元可学习表示输入向量在输入空间出现的不同区域。此外,邻近的神经元可学习对相似的输入进行响应,从而该层可学习所呈现的输入空间的拓扑。

在本示例中,我们创建了位于单位圆上的 100 个数据点。

竞争网络将用于将这些点分成若干自然类。

angles = 0:0.5*pi/99:0.5*pi;
X = [sin(angles); cos(angles)];
plot(X(1,:),X(2,:),'+r')

映射将是由 10 个神经元组成的一维层。

net = selforgmap(10);

指定网络将接受 10 轮训练,并使用 train 基于输入数据对网络进行训练。

net.trainParam.epochs = 10;
net = train(net,X);

现在使用 plotsompos 绘制经过训练的网络的权重位置。

红点是神经元的权重向量,蓝线连接在距离 1 内的每对红点。

plotsompos(net)

该映射现在可用于对输入进行分类,例如 [1; 0]。神经元 1 或 10 的输出应该为 1,因为上述输入向量位于所呈现的输入空间的一端。第一对数字表示神经元,单个数字表示其输出。

x = [1;0];
a = net(x)
a = 10×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     1