BP人工神经网络常用传递函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BP网络常用传递函数

BP网络的传递函数有多种。Log-sigmoid型函数的输入值可取任意值,输出值在0和1之间;tan-sigmod型传递函数tansig的输入值可取任意值,输出值在-1到+1之间;线性传递函数purelin的输入与输出值可取任意值。隐含层常采用S 型传递函数。

BP网络通常有一个或多个隐层,该层中的神经元均采用sigmoid型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值。各种传递函数如图5.6所示。

只改变传递函数而其余参数均固定,用本章5.2节所述的样本集训练BP网络时发现,传递函数使用tansig函数时要比logsig函数的误差小。于是在以后的训练中隐层传递函数改用tansig函数,输出层传递函数仍选用purelin函数。

3)每层节点数的确定:

使用神经网络的目的是实现摄像机输出RGB颜色空间与CIE-XYZ色空间转换,因此BP网络的输入层和输出层的节点个数分别为3。下面主要介绍隐层节点数量的确定。

对于多层前馈网络来说,隐层节点数的确定是成败的关键。若数量太少,则网络所能获取的用以解决问题的信息太少;若数量太多,不仅增加训练时间,更重要的是隐层节点过多还可能出现所谓“过渡吻合”(Overfitting)问题,即测试误差增大导致泛化能力下降,因此合理选择隐层节点数非常重要。关于隐层数及其节点数的选择比较复杂,一般原则是:在能正确反映输入输出关系的基础上,

应选用较少的隐层节点数,以使网络结构尽量简单。本论文中采用网络结构增长型方法,即先设置较少的节点数,对网络进行训练,并测试学习误差,然后逐渐增加节点数,直到学习误差不再有明显减少为止。

newff()

功能建立一个前向BP网络

格式net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF,BLF,PF)

说明

net为创建的新BP神经网络;

PR为网络输入取向量取值范围的矩阵;

[S1 S2…SNl]表示网络隐含层和输出层神经元的个数;

{TFl TF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;

BTF表示网络的训练函数,默认为‘trainlm’;

BLF表示网络的权值学习函数,默认为‘learngdm’;

PF表示性能数,默认为‘mse’。

参数TFi可以采用任意的可微传递函数,比如transig,logsig和purelin等;

训练函数可以是任意的BP训练函数,如trainm,trainbfg,trainrp和traingd等。

BTF默认采用trainlm是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会消耗大量的内存资源。如果计算机内存不够大,不建议用trainlm,而建议采用训练函数trainbfg或trainrp。

虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训练过程死机的情况。

参数TFi可以采用任意的可微传递函数,比如transig,logsig和purelin等;

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

训练函数:

包括梯度下降bp算法训练函数traingd,动量反传递的梯度下降bp算法训练函数traingdm,动态自适应学习率的梯度下降bp算法训练函数traingda,动量反传和动态自适应学习率的梯度下降bp算法训练函数traingdx,levenberg_marquardt的bp算法训练函数trainlm。

BP网络一般都是用三层的,四层及以上的都比较少用;

传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如1,0等,满足某个条件输出1,不满足则0的话,首先想到的是hardlim函数,阈值型的,当然也可以考虑其他的;

然后,假如网络是用来表达某种线性关系时,用purelin---线性传输函数;

若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;

compet---竞争型传递函数;

hardlim---阈值型传递函数;

hardlims---对称阈值型传输函数;

logsig---S型传输函数;

poslin---正线性传输函数;

purelin---线性传输函数;

radbas---径向基传输函数;

satlin---饱和线性传输函数;

satlins---饱和对称线性传输函数;

softmax---柔性最大值传输函数;

tansig---双曲正切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(n);plot(n,a)

matlab按照来计算对数传递函数的值:n=2/(1+exp(-2n))

函数logsig可将神经元的输入(范围为整个实数集)映射到区间(0,1)中。

三、BP网络学习函数

learngd

该函数为梯度下降权值/阈值学习函数,通过神经元的输入和误差,以及权值和阈值的学习

相关文档
最新文档