学习神经网络的好助手
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习神经网络的好助手,可以仿照其中的代码,只需要修改个别参数便可以轻易实现自己需要完成的任务。
1.BP网络构建
(1)生成BP网络
Net=newff(PR,|S1 S2 …SN|,{TF1 TF2 …TFNl},BTF,BLF,PF)
PR:由R维的输入样本最小最大值构成的RX2维矩阵。
[S1 S2…SNl]:各层的神经元个数。
{ TF1 TF2 …TFNl}}:各层的神经元传递函数。
BTF:表示网络的训练函数。默认为‘trainlm’
BLF:表示网络的权值学习函数。默认为‘learngdm’
PF:表示性能数,默认为‘mse’
(2)网络训练
[net,tr,Y,E,Pf,Af]=train(net,P,T,PiAi,VV,TV)
(3) 网络仿真
[Y,Pf,Af,E,,Perf]=sim(net,P,Pi,Ai,T)
2,BP网络举例
例一
%traingd
clear;
clc;
p=[-1 -1 2 2 4;0 5 0 5 7];
T=[-1 -1 1 1 -1]
%利用minmax函数求输入样本范围
net=newff(minmax(p),[5,1],{‘tansig’,’purelin’},’trainrp’); net.trainParam.show=50;%
net.trainParam.lr=0.05;
net.trainParam.epochs=300;
net.trainParam.goal=1e-5;
[net,tr]=train(net,P,T)
net.iw{1,1}%隐层权值
net.b{1}%隐层阈值
net.lw{2,1}%隐层权值
net.b{2}%隐层阈值
sim(net,p)
例二、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
样本数据:
解:
看到期望输出的范围是(-1,1),所以利用双极性signoid函数作为转移函数。
程序如下:
clear;
clc;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X=-1:0.1:1;//x从-1到1的向量, 0.1那个是阶数。就是指-1到1的等差数列的公差// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
D=[-0 .9602 -0.5770 -0.0729 -0.3771 -0.6405 -0.6600 -0.4609…?
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -0.0988..
0.3072 0.3960 0.3449 0.1816 -0.3120 -0.2189 -0.3201
];
figure;
plot(X,D,’*’);%绘制原始数据分布图(附录;1-1)
net=newff([-1 1],[5 1],{‘tansig’,’tansig’});
net.trainParam.epochs=100;%训练的最大次数
net. trainParam.goal=0.005;%全局最小误差
net=train(net,X,D);
O=sim(net,X);
figure;
plot(X,D,’*’,X,O);绘制训练后得到的结果和误差曲线(附录:1-2、1-3)
V=net.iw{1,1} %输入层到中间层的权值
thetal=net.b{1} %中间层各神经元的阈值
W=net.lw{2,1} %中间层到输出层的权值
theta2=net.b{2} %输出层各神经元的阈值
所得结果如下:
输入层到中间层的权值:V=(-9.1669 7.3448 7.3761 4.8966 3.5409)中间层各神经元的阈值: =(6.5885 -2.4019 -0.9962 1.5303 3.2731)中间层到输出层的权值:W=(0.3427 0.2135 0.2981 -0.884. 1.9134)输出层各神经元的阈值:T=-1.5271
例三.
以下是上证指数2009.2.2到3.27的收盘价格,构建一个三层BP神经网络,利用改组信号的6个过去值预测信号的将来值。
Load data3_1,txt;
[m,n]=size(data3_1);
tsx=data3_1(1:m-1,1);
tsx=tsx’;
ts=data3_1(2:m,1);
ts=ts’;
[TSX,TSps]=mapminmax(tsk,1,2);
[TS,TSps]=mapminmax(ts,1,2);
TSX=TSX’;