您的位置:首页 > 理论基础 > 计算机网络

matlab中函数SOFM在神经网络方面的使用方法

2012-12-16 22:31 716 查看
示例一:

%%(1)画出3*2栅格型SOFM的特征映射图

%T8.6

pos=gridtop(3,2);

plotsom(pos)

%%(2)创建和训练SOFM神经网络的MATLAB程序设计

%Example81Tr

clear all;

%创建SOFM网络

net=newsom([0 2;0 1],[3 2],'gridtop');

%定义输入向量

P=[0.1 0.3 1.2 1.1 1.8 1.7 0.1 0.3 1.2 1.1 1.8 1.7; 0.2 0.1 0.3 0.1 0.3 0.2 0.8 0.8 0.9 0.9 0.7 0.8];

%绘制输入向量

plot(P(1,:), P(2,:), '.g', 'markersize', 20);

%训练SOFM网络

net.trainParam.epochs=100;     %设置
4000
训练的最大步长

net=train(net,P);

%绘制训练后的SOFM神经网络特征映射图

hold on;

plotsom(net.iw{1,1}, net.layers{1}.distances);

hold off

%存储训练后的SOFM神经网络

save net81 net;

%%(3)SOFM神经网络的MATLAB仿真程序设计

%Example81Sim

clear all

%加载训练好的SOFM网络

load net81 net;

%定义输入向量

P=[0.1 0.3 1.2 1.1 1.8 1.7 0.1 0.3 1.2 1.1 1.8 1.7; 0.2 0.1 0.3 0.1 0.3 0.2 0.8 0.8 0.9 0.9 0.7 0.8];

%网络仿真

y=sim(net,P);

yc=vec2ind(y)         %输出仿真结果

示例二:

% 利用二维自组织网络对样本数据进行分类

%

close all

clf reset

figure(gcf);

echo on

clc

% NEWSOM 创建自组织网络

% TRAIN 对自组织网络进行训练

% SIM 对自组织网络进行仿真

pause

clc

% 随机产生样本数据 P

P=rands(2,500);

pause

clc

% 画第一幅图:样本数据分布图

plot(P(1,:),P(2,:),'*');

axis([-1.2 1.2 -1.2 1.2]);

title('Input data');

pause

clc

% 建立自组织网络

% 欲将样本数据分为20类,因此网络的竞争层由20个二维分布的神经元构成

net=newsom([-1 1;-1 1],[4 5]);

pause

clc

% 画第二幅图:神经元分布的拓扑结构图

figure;

plotsom(net.layers{1}.positions);

pause

clc

% 画第三幅图:网络初始状态下神经元权值的分布图

figure;

plotsom(net.IW{1,1},net.layers{1}.distances);

pause

clc

% 对网络进行训练

net.trainParam.epochs=1;

net=train(net,P);

pause

clc

% 画第四幅图:画出网络神经元权值,也就是每类样本数据的聚类中心

figure;

plotsom(net.IW{1,1},net.layers{1}.distances);

pause

clc

% 画第五幅图:画出再次训练后的神经元权值

net.trainParam.epochs=3;

net=train(net,P);

figure;

plotsom(net.IW{1,1},net.layers{1}.distances);

pause

clc

% 利用一组新的输入数据检验网络性能

a=sim(net,[0.1;-0.5])

echo off

示例三:

% 利用一维自组织网络对样本数据进行分类

%

close all

clf reset

figure(gcf);

echo on

clc

% NEWSOM 创建自组织网络

% TRAIN 对自组织网络进行训练

% SIM 对自组织网络进行仿真

pause

clc

% 产生样本数据 P

angles=0:0.5*pi/99:0.5*pi;

P=[cos(angles);sin(angles)];

pause

clc

% 画第一幅图:样本数据分布图

plot(P(1,:),P(2,:),'*');

axis([0 1 0 1]);

title('Input data');

pause

clc

% 建立自组织网络

% 欲将样本数据分为9类,因此网络的竞争层由9个神经元构成

net=newsom([0 1;0 1],[9]);

pause

clc

% 对网络进行训练

net.trainParam.epochs=10;

net=train(net,P);

pause

clc

% 画第二幅图:画出网络神经元权值,也就是每类样本数据的聚类中心

figure;

w=net.IW{1};

plotsom(net.IW{1,1},net.layers{1}.distances);

pause

clc

% 利用一组新的输入数据检验网络性能

a=sim(net,[0.6;0.8])
echo off

来源 http://hi.baidu.com/ssrstt/item/f0bf90a8dace997b6dd455d3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MATLAB 网络