神经网络-一篇入门

【Demo】SOM神经网络-Matlab代码说明

作者 : 老饼 发表日期 : 2022-06-09 15:08:43 更新日期 : 2024-10-18 00:43:16
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



SOM神经网络是一种常用的聚类方法,在matlab神经网络工具箱中可以用selforgmap实现

 本文讲解matlab神经网络工具箱使用SOM神经网络的Demo和入参说明,并进行相关使用讲解

通过本文,可以了解如何使用matlab工具箱来实现一个SOM神经网络,以及使用时遇到的问题




     01. matlab工具箱-SOM神经网络的使用    




本节介绍matlab工具箱的SOM神经网络的使用





    matlab-SOM神经网络示例     


matlab使用selforgmap构建一个SOM神经网络,代码示例如下:
% 本demo展示用matlab工具箱训练一个SOM神经网络(2014b版matlab实测已跑通)
% demo来自matlab2014帮助文档
x   = simplecluster_dataset;  % 加载matlab自带的分类数据
net = selforgmap([8 8]);      % 建立一个SOM神经网络
net = train(net,x);           % 训练网络
view(net)                     % 查看网络
y   = net(x);                 % 用训练好的网络进行预测
classes = vec2ind(y);         % 将预测结果由one-hot格式转为类别索引
从上面的例子我们可以看到,使用selforgmap函数就可以建立一个SOM神经网络,
然后用train函数对SOM进行训练,最后把要预测的样本传入训练好的net中,就可以得到预测结果 
  代码示例如下:
      net = selforgmap([3 5]);      
   net = train(net,X);               
   y     = net(X);                       

 其中,selforgmap中的[3 5]用于指定隐节点拓扑为3*5,即15个隐节点  





    selforgmap的语法说明     


selforgmap的使用说明如下:
 1. 语法:  selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn) 
 2. 描述:selforgmap创建一个SOM神经网络                                                                   
 3. 入参说明:                                                                                                                 
        
dimensions   :  行向量,它定义了隐层神经元尺寸。例如[8 3]定义了2维(8*3)的隐层         
coverSteps    :  在该步数之后,领域距离<=1,即不再更新邻域神经元                     
initNeighbor :初始的邻域阈值                                                                              
topologyFcn :隐层拓扑结构函数                                                                           
distanceFcn  :拓扑距离计算函数                                                                            
 默认参数为:selforgmap([8 8],100,3,'hextop',linkdist')







     02. SOM使用时的常见问题    




本节讲解使用SOM神经网络时的一些常见问题




     SOM使用时的常见问题     


一、如何将one-hot形式的判别结果转为类别序号 
net(X)得到分类结果的是one-hot形式,即得到的结果是这种形式
为了直接得到类别的序号3,可以通过vec2ind函数将转为3,如下:
   
二、如何查看SOM训练好的类别中心 
  SOM神经网络的权重W就是各个类别中心,用net.IW{1}就可以提取出来  
 示例如下,就是15个聚类中心的位置 
 
    三、SOM相关的绘图函数 
工具箱附带了相关的绘图函数,可以画出较好看的SOM相关图片      
    👉plotsomhits   
👉plotsomnc   
👉plotsomnd   
    👉plotsomplanes  
    👉plotsompos   
    👉plotsomtop       
但基本都是只有数据是二维时才能使用,或者才具有意义
 因此老饼不再讲解,需要了解的自行在matlab里help一下





好了,以上就是如何使用matlab工具箱实现SOM神经网络的全部内容了~







 End 







联系老饼