SOM神经网络进行模式识别

这篇博客介绍了一个使用SOM(自组织映射)神经网络进行模式识别的实例。通过MATLAB代码展示了如何初始化权重,进行训练,并在训练过程中调整学习率和邻域大小。最终,博客通过绘制图表来展示不同输入样本在神经网络中的位置以及权值随训练迭代的变化情况。
clc
close all
clear all
X=[1 0 0 0
   1 1 0 0
   1 1 1 0
   0 1 0 0
   1 1 1 1];          % 输入向量

pos=gridtop(5,5);     % 输出层定义为二维5*5的矩阵 %定义25个2维数据,其实是存储了25个神经元的位置信息 
y=boxdist(pos);       % 25*25  y的每一列为第n个神经元到其他神经元的距离,可以搜索距离小于某个值的调整权值
figure(1)
plotsom(pos);         % 画出pos的二维平面图
axis([0 4 0 4]);  % 定义坐标轴为0到4
hold on
w_matrix=rand(25,4);  % 权值随机初始化
dn=zeros(5,25);       % 定义输出神经元之间距离

fid=fopen('Som_Weight.txt', 'wt');%留待下面保存权值
fid2=fopen('Som_Weightanlys.txt','wt');
epoch=10000;%迭代/训练次数


for num=1:epoch     
%--------------------每训练200次记录输出权值,生成txt文件--------------------

    if (num==1)||(rem(num,200)==0)              %rem(x,y)表示的是x除以y后的余数,x,y都是整数;初始值、每200次记录输出权值
        fprintf(fid,'第%d次训练\n',num);         
        fprintf(fid,'\n');  %\n相当于一个回车
     
        for j=1:25
            w_matrix_out=w_matrix(j,1:4);
           % w_anlysis=[w_anlysis;w_matrix(j,1:4)];%分析权值变化用的矩阵,第一行无用,注意作图时舍去
            fprintf(fid2,'%d  %d  %d  %d\n',w_matrix_out);
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值