网站建设 开票,今天军事新闻最新消息,织梦网站后台管理,wordpress 国产主题本站原创文章#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO并讲解其中的代码含义和相关使用说明- 01.SOM神经网络DEMO代码 -- 本文说明 -下面#xff0c;我们先随机初始化一些样本点#xff0c;然后…本站原创文章转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO并讲解其中的代码含义和相关使用说明- 01.SOM神经网络DEMO代码 -- 本文说明 -下面我们先随机初始化一些样本点然后调用matlab的神经网络工具箱训练一个SOM神经网络并借此DEMO讲解如何用matlab工具箱SOM神经网络的使用- SOM神经网络DEMO代码 -% 本demo展示用matlab工具箱训练一个SOM神经网络% 生成用于聚类的数据rand(seed,70);% 随机种子设定随机种子是为了每次的结果一样
dataC [2.5,2.5;7.5,2.5;2.5,7.5;7.5,7.5];% 生成四个样本中心
sn 80;% 样本个数
X rand(2,sn)dataC(:,mod(1:sn,4)1);% 随机生成样本点% 调用工具箱训练一个SOM网络
net selforgmap([35]);% 建立一个SOM神经网络
net train(net,X);% 训练网络
W net.IW{1};% 网络的权重也即各个聚类中心的位置
y net(X);% 用训练好的网络进行预测
classes vec2ind(y);% 将预测结果由one-hot格式转为类别索引% 绘图plot(X(1,:),X(2,:),*);% 原始样本
hold on
plot(W(:,1),W(:,2),or,MarkerFaceColor,g);% 网络训练好的聚类中心- 运行结果 -运行结果如下 绿色的隐神经元(聚类中心)红色的是样本- 02. matlab的SOM神经网络使用解说 -本节讲解matlab工具箱如何训练一个SOM神经网络及一些常用的问题- 如何训练一个SOM神经网络 -从上面的例子我们可以看到使用selforgmap函数就可以建立一个SOM神经网络然后用train函数对网络进行训练(需要传入训练的数据)最后把要预测的样本传入训练好的net中就可以得到预测结果 如下 net selforgmap([3 5]); net train(net,X); y net(X); PASS:selforgmap中的[3 5]用于指定隐节点拓扑为3*5即15个隐节点✍️关于selforgmap的入参说明selforgmap共有5个入参dimensions 行向量它定义了隐层神经元尺寸 例如[8 3]定义了2维(8*3)的隐层 coverSteps 在该步数之后领域距离1即不再更新邻域神经元 initNeighbor 初始的邻域阈值 topologyFcn 隐层拓扑结构函数 distanceFcn 拓扑距离计算函数 默认参数为selforgmap([8 8],100,3,hextop,linkdist) - 如何预测类别 -如果要预测样本X的类别只需使用net(X)就可以得到样本的分类类别如果net(X)输出[0,0,1]则代表类别是第3类 如何将one-hot形式的判别结果转为类别序号net(X)得到分类结果的是one-hot形式即得到的结果是[0 ,0 ,1]这种形式为了直接得到类别的序号3而不是[0 ,0 ,1]可以通过vec2ind函数将[0 ,0 ,1]转为3如下- 如何查看类别中心 - SOM神经网络的权重W就是各个类别中心用net.IW{1}就可以提取出来如下就是15个聚类中心的位置 - 相关的绘图函数 -另外工具箱还附带了相关的绘图函数可以画出较好看的SOM相关图片 plotsomhits plotsomnc plotsomnd plotsomplanes plotsompos plotsomtop 但基本都是只有数据是二维时才能使用/或才具有意义因此老饼不再讲解需要了解的自行在matlab里help一下 相关文章《BP神经网络梯度推导》《BP神经网络提取的数学表达式》《一个BP的完整建模流程》