神经网络例子.docx
《神经网络例子.docx》由会员分享,可在线阅读,更多相关《神经网络例子.docx(7页珍藏版)》请在冰豆网上搜索。
![神经网络例子.docx](https://file1.bdocx.com/fileroot1/2022-11/17/32e2afd9-d837-4901-af05-8ae0462a9561/32e2afd9-d837-4901-af05-8ae0462a95611.gif)
神经网络例子
神经网络
1.单层感知器
2.数据分类
3.输出为0和1
4.解决线性可分的分类模型
5.例1.从待分类的数据中取出一部分数据及其对应的类别作为样本数据,设计并训练一个能对分类数据进行分类的单层感知器神经网络
代码:
%给定训练样本数据
P=[.6;.90.1];
%给定样本数据所对应的类别,用0和1来表示两种类别
T=[110];
%创建一个有两个输入、样本数据的取值范围都在[-11]之间,并且网络只有一个神经元的感知器神经网络
net=newp([-11;-11],1);
%设置网络的最大训练次数为20次
使用训练函数对创建的网络进行训练
net=train(net,P,T);
%对训练后的网络进行仿真
Y=sim(net,P)
%计算网络的平均绝对误差,表示网络错误分类
E1=mae(Y-T)
%给定测试数据,检测训练好的神经网络的性能
Q=[;];
%使用测试数据,对网络进行仿真,仿真输出即为分类的结果
Y1=sim(net,Q)
%创建一个新的绘图窗口
figure;
%在坐标中绘制测试数据点,并根据数据所对应的类别用约定的符号画出
plotpv(Q,Y1);
%在坐标中绘制分类线
plotpc{1},{1})
6.线性神经网络模型
7.线性神经网络类似感知器,但是线性神经网络的激活函数是线性的,而不是硬线转移函数,因此,线性神经网络的输出可以是任意值,而感知器的输出不是0就是1,线性神经网络网络和感知器一样只能解决线性可分的问题.
例2.要求设计一个线性神经网络,寻找给定数据之间的线性关系
代码:
P=[];
T=[1];
%创建一个只有一个输出,输入延迟为0,学习速率为的线性神经网络,minmax(P)表示样本数据的取值范围
net=newlin(minmax(P),1,0,;
%对创建的神经网络进行初始化,设置权值和阈值的初始值
net=init(net);
设置网络训练后的目标误差为
求解网络的均方误差值
E=mse(y-T)
8.BP神经网络
9.预测
能逼近任意非线性函数
例3.表2-4为某药品的销售情况,现构建一个如下的BP神经网络对药品的销售进行预测:
输入层为三个结点,隐含层结点数为5,隐含层的激活函数为tansig(双曲正切S型传递函数);输出层结点数为1,输出层的激活函数为logsig(S型的对数函数),并利用此网络对药品的销售量进行预测,预测的方法采用滚动预测方式,即用前三个月的销售量来预测第四个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、3、4月的销售量为输入预测第5个月的销售量。
如此反复直至满足预测精度要求为止。
月份
1
2
3
4
5
6
销量
2056
2395
2600
2298
1634
1600
月份
7
8
9
10
11
12
销量
1873
1478
1900
1500
2046
1556
212241 263 ;
241 263236;
263236161 ;
236161168 ;
161168 187 ;
168 187 148 ;
187 148193;
148193157205 156; ]
代码:
%以每三个月的销售量经归一化处理后作为输入
P=[;
;
;
;
;
]’;
%以第四个月的销售量归一化处理后作为目标向量
T=[];
%创建一个BP神经网络,每一个输入向量的取值范围为[0,1],隐含层为5个神经元,输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,训练函数为梯度下降函数
net=newff([01;01;01],[51],{‘tansig’,’logsig’},’traingd’);
设置学习速率为
=;
net=train(net,P,T)
10.RBF神经网络
11.属于前向神经网络,能够以任意精度逼近任意连续函数,特别适合于解决分类问题
例4.建立一个径向基神经网络,对非线性函数y=sqrt(x)进行逼近,并作出网络的逼近误差曲线
代码:
%输入从0开始变化到5,每次变化幅度为
x=0:
:
5;
y=sqrt(x);
%建立一个目标误差为0,径向基函数的分布密度为,隐含层神经元个数的最大值为20,每增加5个神经元显示一次结果
net=newrb(x,y,0,,20,5);
t=sim(net,x);
%在以输入x和函数值与网络输出之间的差值y-t坐标上绘出误差曲线,并用“*”来标记函数值与输出值之间的差值
plot(x,y-t,’*-’)
12.自组织竞争神经网络
属于前向神经网络,特别适合于解决模式分类和识别方面的问题
例5.人口分类是人口统计中的重要指标,现有1999年共10个地区的人口出生比例情况如下:
出生男性百分比分别为:
;
出生女性百分比分别为:
;
建立一个自组织神经网络对上述数据分类,给定某个地区的男女出生比例分别为:
,测试训练以后的自组织神经网络的性能,判断其属于哪个类别.
代码:
P=[;];
%创建一个自组织神经网络,[01;01]表示输入数据的取值范围在[01]之间,[34]表示竞争层组织结构为3×4,其余参数取默认值
net=newsom([01;01],[34]);
获取训练后的自组织神经网络的权值
w1={1,1};
%绘出训练后自组织神经网络的权值分布图
plotsom(w1,{1}.distances);
%输入测试数据
p=[;];
%对网络进行测试
y_test=sim(net,p);
%将测试数据所得到的单值向量变换成下标向量
y_test=vec2ind(y_test)
13.学习向量量化(LVQ)神经网络
属于前向神经网络,在模式识别和优化领域有着广泛应用
例6.针对一组输入向量,设计一个LVQ神经网络,经过训练后,能对给定的数据进行模式识别.
代码:
%输入向量P及其对应的类别向量C
P=[-6-4-20000246;02-212-212-20];
C=[1112222111];
%将类别向量C转换为目标向量T
T=ind2vec(C);
%绘制输入向量P,用颜色将输入向量分为两类
Plotvec(P,C,’*r’);
axis([-88-33])
%创建一个LVQ神经网络,隐含层有5个神经元,[]表示在隐含层的权值中,有60%的列的第一行的值是1,40%的列的第一行值为1,也就是说60%的列属于第一类,40%属于第二类,网络的其他参数取默认值
net=newlvq(minmax(P),5,[]);
给定数据,输出网络的分类结果测试网络的性能
p=[01;0];
y=sim(net,p);
yc=vec2ind(y)
%对给定数据,一个归为第二类,一个归为第一类
yc=
21
14.Elman神经网络
反馈神经网络,他是一种有非线性元件构成的反馈系统,其稳定状态的分析比属于前向神经网络要复杂得多
可解决旅行商问题(TSP)
例7.下表为某单位办公室七天上午9点到12点的空调负荷数据,数据已经做了归一化处理,预测方法采用前6天数据作为网络的训练样本,每3天的负荷数据作为输入向量,第4天的负荷作为目标向量,第7天的数据作为网络的测试数据
空调负荷数据表
时间
9时负荷
10时负荷
11时负荷
12时负荷
第1天
第2天
第3天
第4天
第5天
第6天
第7天
代码:
%根据预测方法得到输入向量和目标向量
P=[;;]';
T=[;;]';
%输入向量的取值范围为[01],用threshold来标记
threshold=[01;01;01;01;01;01;01;01;01;01;01;01];
%创建一个Elman神经网络,隐含层的神经元的个数为17个,4个输出层神经元,隐含层激活函数为tansig,输出层激活函数为purelin
net=newelm(threshold,[17,4],{'tansig','purelin'});
输入测试数据
P_test=[]';
T_test=[]';
y=sim(net,P_test)
%在测试数据下,计算网络的输出和实际目标向量之间的差值
Error=y-T_test;
%在坐标平面上画出差值曲线
Plot(1:
4,error,'-')
15.基于遗传算法的BP神经网络
BP神经网络是人工神经网络中应用最广泛的
缺陷:
学习收敛速度太慢;不能保证收敛到全局最小点;网络结构不易确定