二维自组织图
与一维问题一样,此自组织地图将学会代表输入向量发生的输入空间的不同区域。但是,在此示例中,神经元将以二维网格的形式安排自己,而不是线。
我们想在矩形中对1000个两元素向量进行分类。
x = rands(2,1000);绘图(x(1,:),x(2,:),,,,'+r')
我们将使用5 x 6层的神经元来对上述向量进行分类。我们希望每个神经元对矩形的不同区域做出反应,以及相邻的神经元以对相邻区域做出反应。
该网络配置为匹配输入的尺寸。这里需要此步骤,因为我们将绘制初始权重。通常在训练时自动执行配置。
net = selforgmap([5 6]);net = configure(net,x);
我们可以可视化我们刚刚创建的网络图
。
每个神经元在其两个权重的位置上以红点表示。最初,所有神经元在向量的中间具有相同的权重,因此只出现一个点。
图块(网)
现在,我们在1000个矢量上训练地图,以获取1个时代,然后重新推出网络权重。
训练后,请注意,神经元的层已经开始自组织,因此每个神经元现在都对输入空间的不同区域进行了分类,并对邻近区域进行反应。
net.trainparam.epochs = 1;net =火车(net,x);
图块(网)
现在,我们可以通过将其授予网络并查看哪些神经元的反应来对矢量进行分类。
响应“ 1”表示的神经元,因此X属于该类。
x = [0.5; 0.3];y = net(x)
y =30×10 0 0 0 0 0 0 0 0 0 0⋮