学习神经网络的好助手

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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’;

相关文档
最新文档