BP网络常用传递函数

上传人:飞*** 文档编号:39936237 上传时间:2018-05-21 格式:DOCX 页数:5 大小:30.13KB
返回 下载 相关 举报
BP网络常用传递函数_第1页
第1页 / 共5页
BP网络常用传递函数_第2页
第2页 / 共5页
BP网络常用传递函数_第3页
第3页 / 共5页
BP网络常用传递函数_第4页
第4页 / 共5页
BP网络常用传递函数_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《BP网络常用传递函数》由会员分享,可在线阅读,更多相关《BP网络常用传递函数(5页珍藏版)》请在金锄头文库上搜索。

1、BPBP 网络常用传递函数网络常用传递函数: :BP 网络的传递函数有多种。Log-sigmoid 型函数的输入值可取任意值,输出值在 0 和 1 之间;tan-sigmod 型传递函数 tansig 的输入值可取任意值,输出值在-1 到+1 之间;线性传递函数 purelin 的输入与输出值可取任意值。BP 网络通常有一个或多个隐层,该层中的神经元均采用 sigmoid 型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值。各种传递函数如图 5.6 所示。只改变传递函数而其余参数均固定,用本章 5.2 节所述的样本集训练 BP 网络时发现,传递函数使用 tansig 函数

2、时要比 logsig 函数的误差小。于是在以后的训练中隐层传递函数改用 tansig 函数,输出层传递函数仍选用 purelin 函数。3 3) 每层节点数的确定:每层节点数的确定:使用神经网络的目的是实现摄像机输出 RGB 颜色空间与 CIE-XYZ 色空间转换,因此 BP 网络的输入层和输出层的节点个数分别为 3。下面主要介绍隐层节点数量的确定。对于多层前馈网络来说,隐层节点数的确定是成败的关键。若数量太少,则网络所能获取的用以解决问题的信息太少;若数量太多,不仅增加训练时间,更重要的是隐层节点过多还可能出现所谓“过渡吻合”(Overfitting)问题,即测试误差增大导致泛化能力下降,因

3、此合理选择隐层节点数非常重要。关于隐层数及其节点数的选择比较复杂,一般原则是:在能正确反映输入输出关系的基础上,应选用较少的隐层节点数,以使网络结构尽量简单。本论文中采用网络结构增长型方法,即先设置较少的节点数,对网络进行训练,并测试学习误差,然后逐渐增加节点数,直到学习误差不再有明显减少为止。newff()功能 建立一个前向 BP 网络格式 net = newff(PR,S1 S2.SN1,TF1 TF2.TFN1,BTF,BLF,PF)说明 net 为创建的新 BP 神经网络;PR 为网络输入取向量取值范围的矩阵;S1 S2SNl表示网络隐含层和输出层神经元的个数;TFl TF2TFN1表

4、示网络隐含层和输出层的传输函数,默认为tansig ;BTF 表示网络的训练函数,默认为trainlm ;BLF 表示网络的权值学习函数,默认为learngdm ;PF 表示性能数,默认为mse 。参数 TFi 可以采用任意的可微传递函数,比如 transig,logsig 和 purelin 等;训练函数可以是任意的 BP 训练函数,如 trainm,trainbfg,trainrp 和 traingd 等。BTF 默认采用 trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会消耗大量的内存资源。如果计算机内存不够大,不建议用 trainlm,而建议采用训练函数 trai

5、nbfg 或 trainrp。虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训 练过程死机的情况。参数 TFi 可以采用任意的可微传递函数,比如 transig,logsig 和 purelin 等;训练函数可以是任意的 BP 训练函数,如 trainm,trainbfg,trainrp 和 traingd 等。BTF 默 认采用 trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会消耗大量的 内存资源。如果计算机内存不够大,不建议用 trainlm,而建议采用训练函数 trainbfg 或 trainrp。虽然这两个函数的运行速度比较慢,但它们

6、的共同特点是内存占用量小,不至于 出现训练过程死机的情况。训练函数:包括梯度下降 bp 算法训练函数 traingd,动量反传递的梯度下降 bp 算法训练 函数 traingdm,动态自适应学习率的梯度下降 bp 算法训练函数 traingda,动量反传和动态 自适应学习率的梯度下降 bp 算法训练函数 traingdx,levenberg_marquardt 的 bp 算法训练函 数 trainlm。BP 网络一般都是用三层的,四层及以上的都比较少用;传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如 1,0 等,满足某个条件输出 1,不满足则 0 的话,首先想到的是 hardl

7、im 函数,阈值型的,当然也可以考虑其他的;然后,假如网络是用来表达某种线性关系时,用 purelin-线性传输函数;若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;compet-竞争型传递函数;hardlim-阈值型传递函数;hardlims-对称阈值型传输函数;logsig-S 型传输函数;poslin-正线性传输函数;purelin-线性传输函数;radbas-径向基传输函数;satlin-饱和线性传输函数;satlins-饱和对称线性传输函数;softmax-柔性最大值传输函数;tansig-双曲

8、正切 S 型传输函数;tribas-三角形径向基传输函数;二、神经元上的传递函数 传递函数是 BP 网络的重要组成部分,必须是连续可微的,BP 网络常采用 S 型的 对数或正切函数和线性函数。 Logsig 传递函数为 S 型的对数函数。 调用格式为: A=logsig(N) N:Q 个 S 维的输入列向量; A:函数返回值,位于区间(0,1) 中info=logsig(code) 依据 code 值的不同返回不同的信息,包括:deriv返回微分函数的名称; name返回函数全程; output返回输出值域; active返回有效的输入区间例如:n=-10:0.1: 10; a=logsig(

9、n);plot(n,a) matlab 按照来计算对数传递函数的值:n=2/(1+exp(-2n) 函数 logsig 可将神经元的输入(范围为整个实数集)映射到区间(0,1)中。 三、BP 网络学习函数 learngd 该函数为梯度下降权值/阈值学习函数,通过神经元的输入和误差,以及权值和阈值的学习 速率,来计算权值或阈值的变化率。 调用格式; dW,ls=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)以一个单隐层的 BP 网络设计为例,介绍利用神经网络工具箱进行 BP 网络设计及分析 的过程 1. 问题描述通过对函数进行采样得到了网络的输入变量 P 和目标变量 T

10、: P=-1:0.1:1; T=-0.9602 -0.577. -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.0312 -0.2189 -0.3201 2. 网络的设计网络的输入层和输出层的神经元个数均为 1,网络的隐含神经元个数应该在 38 之间。 网络设计及运行的代码: s=3:8; res=1:6; for i=1:6; net=newff(minmax(P),s(i),1,tansig,log

11、sig,traingdx);net.trainParam.epachs=2000;net.trainParam.goal=0.001;net=train(net,P,T)y=sim(net,P)error=y-T;res(i)=norm(error); end 代码运行结果:网络训练误差%获取训练数据与预测数据 input_train=data(n(1:9900),1:3);output_train=data1(n(1:9900),1); input_test=data(n(9901:10000),1:3); output_test=data1(n(9901:10000),1); %数据归一化

12、 inputn,inputps=mapminmax(input_train); outputn,outputps=mapminmax(output_train); % bp 训练 %初始化网络结构 net=newff(inputn,outputn,100); net.trainParam.show=30; net.trainParam.epochs=300; net.trainParam.lr=0.01; net.trainParam.goal=1e-6; %网络训练 net=train(net,inputn,outputn); % bp 预测 %预测数据归一化 inputn_test=map

13、minmax(apply,input_test,inputps); %网络预测输出 an=sim(net,inputn_test); %网络输出反归一化 BPoutput=mapminmax(reverse,an,outputps); % 结果分析 figure plot(BPoutput,:og); hold on plot(output_test,-*); legend(预测输出,期望输出,fontsize,12) title(BP 网络预测输出,fontsize,12) xlabel(样本,fontsize,12) ylabel(输出,fontsize,12) %预测误差 error=BPoutput-output_test; figure plot(error,-*) title(神经网络预测误差) errorsum=sum(abs(error) save data2 net inputps outputps

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号