神经网络建模及Matlab中重要的BP网络函数
BP神经网络原理及其MATLAB应用

BP神经网络原理及其MATLAB应用BP神经网络(Back Propagation Neural Network)是一种基于梯度下降算法的人工神经网络模型,具有较广泛的应用。
它具有模拟人类神经系统的记忆能力和学习能力,可以用来解决函数逼近、分类和模式识别等问题。
本文将介绍BP神经网络的原理及其在MATLAB中的应用。
BP神经网络的原理基于神经元间的权值和偏置进行计算。
一个标准的BP神经网络通常包含三层:输入层、隐藏层和输出层。
输入层负责接收输入信息,其节点数与输入维度相同;隐藏层用于提取输入信息的特征,其节点数可以根据具体问题进行设定;输出层负责输出最终的结果,其节点数根据问题的要求决定。
BP神经网络的训练过程可以分为前向传播和反向传播两个阶段。
前向传播过程中,输入信息逐层传递至输出层,通过对神经元的激活函数进行计算,得到神经网络的输出值。
反向传播过程中,通过最小化损失函数的梯度下降算法,不断调整神经元间的权值和偏置,以减小网络输出与实际输出之间的误差,达到训练网络的目的。
在MATLAB中,可以使用Neural Network Toolbox工具箱来实现BP神经网络。
以下是BP神经网络在MATLAB中的应用示例:首先,需导入BP神经网络所需的样本数据。
可以使用MATLAB中的load函数读取数据文件,并将其分为训练集和测试集:```data = load('dataset.mat');inputs = data(:, 1:end-1);targets = data(:, end);[trainInd, valInd, testInd] = dividerand(size(inputs, 1), 0.6, 0.2, 0.2);trainInputs = inputs(trainInd, :);trainTargets = targets(trainInd, :);valInputs = inputs(valInd, :);valTargets = targets(valInd, :);testInputs = inputs(testInd, :);testTargets = targets(testInd, :);```接下来,可以使用MATLAB的feedforwardnet函数构建BP神经网络模型,并进行网络训练和测试:```hiddenLayerSize = 10;net = feedforwardnet(hiddenLayerSize);net = train(net, trainInputs', trainTargets');outputs = net(testInputs');```最后,可以使用MATLAB提供的performance函数计算网络的性能指标,如均方误差、相关系数等:```performance = perform(net, testTargets', outputs);```通过逐步调整网络模型的参数和拓扑结构,如隐藏层节点数、学习率等,可以进一步优化BP神经网络的性能。
BP人工神经网络及matlab实现

功能 对数Sigmoid激活函数 格式 a = logsig(N) 说明对数Sigmoid函数把神经元
的输入范围从(-∞,+∞)映射到(0, 1)。它是可导函数,适用于BP训 练的神经元。
5-4 一个简单的例子
下表为某药品的销售情况,现构建一个如下的三层BP神经网 络对药品的销售进行预测:输入层有三个结点,隐含层结点数为5, 隐含层的激活函数为tansig;输出层结点数为1个,输出层的激活 函数为logsig,并利用此网络对药品的销售量进行预测,预测方法 采用滚动预测方式,即用前三个月的销售量来预测第四个月的销 售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、 3、4月的销售量为输入预测第5个月的销售量.如此反复直至满足预 测精度要求为止。
e = e yio who yio who
p
(
yio(k)= who
h
whohoh(k)-bo)
who
=hoh(k)
e
yio
=(12oq=1(do(k)-yoo(k)))2 yio
=-(do(k)-yoo(k))yoo
(k)
=-(do(k)-yoo(k))f(yio(k)) -o(k)
5-2 BP网络的学习算法
情况二的直观表达
当误差对权值的偏导数 小于零时,权值调整量 为正,实际输出少于期 望输出,权值向增大方 向调整,使得实际输出 与期望输出的差减少。
e
who
w
e
h
o
<0,
此时Δwho>0
演示
BP算法 手控
5-3 BP神经网络的重要函数和基本功能
5-3-1 BP神经网络的重要函数
函数名 newff() tansig() logsig() traingd()
神经网络建模及Matlab中重要的BP网络资料

神经网络建模及Matlab中重要的BP网络一、神经组织的基本特征1.细胞体是一个基本的初等信号处理器,轴突是信号的输出通路,树突是信号的输入通路。
信号从一个神经细胞经过突触传递到另一个细胞。
2.不同的神经元之间有不同的作用强度,称为联接强度。
当某细胞收到信号时,它的电位发生变化,如果电位超过某一阈值时,该细胞处于激发态,否则处于抑制状态。
3.两神经元之间的联接强度随其激发与抑制行为相关性的时间平均值正比变化,也就是说神经元之间的联接强度不是一成不变的。
这就是生物学上的Hebb 律。
二、人工神经元的M-P模型(McCulloch、Pitts,1943)1.构造一个模拟生物神经组织的人工神经网络的三要素:(1).对单个神经元给出定义;(2).定义网络结构:决定神经元数量及连接方式;(3).给出一种方法,决定神经元之间的联接强度。
2.M-P模型其中,t表示时间S i (t)表示第i个神经元在t时刻的状态,Si(t)=1表示处于激发态,Si(t)=0表示处于抑制态wij表示第j个神经元到第i个神经元的联接强度,称之为权,可正可负表示第i个神经元在t时刻所接收到的所有信号的线性迭加。
μi表示神经元i的阈值, 可以在模型中增加一个S k(t)=1神经元k,并且w ik=-μi,则阈值可归并到和号中去。
注:1.M-P神经元虽然简单,但可以完成任何计算。
2.神经元的状态可以取[0,1]中的连续值,如用以下函数代替θ(x): μiWi1∑Wi2Wi3I2H2H3I3O1H1I4I1O2输出层Oi输入层Ik隐含层Hj权Wjk权Wij三、多层前传网络1.特点:Ø相邻层全互连Ø同层没有连接Ø输出与输入没有直接联系2.各层神经元个数的确定输入层、输出层的神经元个数由研究对象的输入、输出信息来确定。
隐含层:3.符号说明μ:表示一个确定的已知样品的标号;i, j, k:分别对应于输出层、隐含层、输入层的下标;将第μ个样品的原始数据输入网络时,相应输出单元状态;将第μ个样品的原始数据输入网络时,相应隐含单元状态;将第μ个样品的原始数据输入网络时,相应输入单元数据;wij:从隐含层第j个神经元到输出层第i个神经元的联接强度;wjk:从输入层第k个神经元到隐含层第j个神经元的联接强度;4.网络数据流程对应于输入层的输入:隐单元j的输入是:对应的输出是:输出单元i收到的迭加信号是:输出单元i的输出是:显然输出是所有权w={wij ,wjk}的函数四、向后传播算法(Back-Propagation)设样品μ在输出单元i上的理想输出为,则函数:表示了在一定的权下,理想输出与实际输出的差异。
BP神经网络地Matlab语法

1. 数据预处理在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。
下面简要介绍归一化处理的原理与方法。
(1) 什么是归一化?数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,比如(0.1,0.9) 。
(2) 为什么要归一化处理?<1>输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。
<2>数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。
<3>由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。
例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。
<4>S形激活函数在(0,1)区间以外区域很平缓,区分度太小。
例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。
(3) 归一化算法一种简单而快速的归一化算法是线性转换算法。
线性转换算法常见有两种形式:<1>y = ( x - min )/( max - min )其中min为x的最小值,max为x的最大值,输入向量为x,归一化后的输出向量为y 。
上式将数据归一化到 [ 0 , 1 ]区间,当激活函数采用S形函数时(值域为(0,1))时这条式子适用。
<2>y = 2 * ( x - min ) / ( max - min ) - 1这条公式将数据归一化到 [ -1 , 1 ] 区间。
当激活函数采用双极S形函数(值域为(-1,1))时这条式子适用。
(4) Matlab数据归一化处理函数Matlab中归一化处理数据可以采用premnmx , postmnmx , tramnmx 这3个函数。
<1> premnmx语法:[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)参数:pn: p矩阵按行归一化后的矩阵minp,maxp:p矩阵每一行的最小值,最大值tn:t矩阵按行归一化后的矩阵mint,maxt:t矩阵每一行的最小值,最大值作用:将矩阵p,t归一化到[-1,1] ,主要用于归一化处理训练数据集。
BP神经网络实验详解(MATLAB实现)

BP神经网络实验详解(MATLAB实现)BP(Back Propagation)神经网络是一种常用的人工神经网络结构,用于解决分类和回归问题。
在本文中,将详细介绍如何使用MATLAB实现BP神经网络的实验。
首先,需要准备一个数据集来训练和测试BP神经网络。
数据集可以是一个CSV文件,每一行代表一个样本,每一列代表一个特征。
一般来说,数据集应该被分成训练集和测试集,用于训练和测试模型的性能。
在MATLAB中,可以使用`csvread`函数来读取CSV文件,并将数据集划分为输入和输出。
假设数据集的前几列是输入特征,最后一列是输出。
可以使用以下代码来实现:```matlabdata = csvread('dataset.csv');input = data(:, 1:end-1);output = data(:, end);```然后,需要创建一个BP神经网络模型。
可以使用MATLAB的`patternnet`函数来创建一个全连接的神经网络模型。
该函数的输入参数为每个隐藏层的神经元数量。
下面的代码创建了一个具有10个隐藏神经元的单隐藏层BP神经网络:```matlabhidden_neurons = 10;net = patternnet(hidden_neurons);```接下来,需要对BP神经网络进行训练。
可以使用`train`函数来训练模型。
该函数的输入参数包括训练集的输入和输出,以及其他可选参数,如最大训练次数和停止条件。
下面的代码展示了如何使用`train`函数来训练模型:```matlabnet = train(net, input_train, output_train);```训练完成后,可以使用训练好的BP神经网络进行预测。
可以使用`net`模型的`sim`函数来进行预测。
下面的代码展示了如何使用`sim`函数预测测试集的输出:```matlaboutput_pred = sim(net, input_test);```最后,可以使用各种性能指标来评估预测的准确性。
BP神经网络matlab实现和matlab工具箱使用实例

samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255]; %3*3;上设输输作3*3(实作3和网网) expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11]; %3*3;星也输也作3*3(实作3和网网),如输有的有有学
num1=5; %设隐设稍 num2=10000; %最也迭迭迭稍 a1=0.02; %星也显显 a2=0.05; %学学学
test=randn(1,5)*0.5; %网网网稍5和个个作 in=-1:.1:1; %训训作 expout=[-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 .1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 .3072 .3960 .3449 .1816
%p,t作作我我训训输输,pp作作训训虚的我我输输网网,最然的ww作作pp神经训训虚的BP训 训然的输也
function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp) plot(p,t,"+"); title("训训网网"); xlabel("P"); ylabel("t"); [w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin"); %我我我初稍和设设的BP我我 zhen=25; %每迭迭每每迭每稍显显 biglr=1.1; %学学学使学学学(和也用也用用用) litlr=0.7; %学学学使学学学(梯梯然梯经学使) a=0.7 %动网动a也也(△W(t)=lr*X*ん+a*△W(t-1)) tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx [w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin",p,t,tp);
BP神经网络的Matlab语法介绍

1. 数据预处理在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。
下面简要介绍归一化处理的原理与方法。
(1) 什么是归一化?数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,比如(0.1,0.9) 。
(2) 为什么要归一化处理?<1>输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。
<2>数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。
<3>由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。
例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。
<4>S形激活函数在(0,1)区间以外区域很平缓,区分度太小。
例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。
(3) 归一化算法一种简单而快速的归一化算法是线性转换算法。
线性转换算法常见有两种形式:<1>y = ( x - min )/( max - min )其中min为x的最小值,max为x的最大值,输入向量为x,归一化后的输出向量为y 。
上式将数据归一化到 [ 0 , 1 ]区间,当激活函数采用S形函数时(值域为(0,1))时这条式子适用。
<2>y = 2 * ( x - min ) / ( max - min ) - 1这条公式将数据归一化到 [ -1 , 1 ] 区间。
当激活函数采用双极S形函数(值域为(-1,1))时这条式子适用。
(4) Matlab数据归一化处理函数Matlab中归一化处理数据可以采用premnmx , postmnmx , tramnmx 这3个函数。
<1> premnmx语法:[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)参数:pn: p矩阵按行归一化后的矩阵minp,maxp:p矩阵每一行的最小值,最大值tn:t矩阵按行归一化后的矩阵mint,maxt:t矩阵每一行的最小值,最大值作用:将矩阵p,t归一化到[-1,1] ,主要用于归一化处理训练数据集。
BP神经网络在Matlab函数逼近中的应用

燕山大学模式识别与智能系统导论题目: BP网络在函数逼近中的应用专业:控制工程姓名: X X X 学号:一BP神经网络及其原理............................................................ - 1 -1.1 BP神经网络定义............................................................. - 1 -1.2 BP神经网络模型及其基本原理..................................... - 1 -1.3 BP神经网络的主要功能................................................. - 3 -1.4 BP网络的优点以及局限性............................................. - 3 - 二基于MATLAB的BP神经网络工具箱函数 ........................ - 6 -2.1 BP网络创建函数............................................................. - 7 -2.2 神经元上的传递函数...................................................... - 7 -2.3 BP网络学习函数............................................................. - 8 -2.4 BP网络训练函数............................................................. - 9 - 三BP网络在函数逼近中的应用.............................................. - 10 -3.1 问题的提出.................................................................... - 10 -3.2 基于BP神经网络逼近函数......................................... - 10 -3.3 不同频率下的逼近效果................................................ - 14 -3.4 讨论................................................................................ - 17 -一BP神经网络及其原理1.1 BP神经网络定义BP (Back Propagation)神经网络是一种神经网络学习算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
神经网络建模及Matlab中重要的BP网络函数一、神经组织的基本特征1.细胞体是一个基本的初等信号处理器,轴突是信号的输出通路,树突是信号的输入通路。
信号从一个神经细胞经过突触传递到另一个细胞。
2.不同的神经元之间有不同的作用强度,称为联接强度。
当某细胞收到信号时,它的电位发生变化,如果电位超过某一阈值时,该细胞处于激发态,否则处于抑制状态。
3.两神经元之间的联接强度随其激发与抑制行为相关性的时间平均值正比变化,也就是说神经元之间的联接强度不是一成不变的。
这就是生物学上的Hebb律。
∑t j ij t S w )(二、人工神经元的M-P 模型(McCulloch 、Pitts,1943)1.构造一个模拟生物神经组织的人工神经网络的三要素:(1).对单个神经元给出定义;(2).定义网络结构:决定神经元数量及连接方式; (3).给出一种方法,决定神经元之间的联接强度。
2.M-P 模型其中,t 表示时间S i (t)表示第i 个神经元在t 时刻的状态,S i (t)=1表示处于激发态,S i (t)=0表示处于抑制态w ij 表示第j 个神经元到第i 个神经元的联接强度,称之为权,可正可负表示第i 个神经元在t 时刻所接收到的所有信号的线性迭加。
μi 表示神经元i 的阈值, 可以在模型中增加一个S k (t)=1神经元k ,并且w ik =-μi ,则阈值可归并到和号中去。
注:1.M-P 神经元虽然简单,但可以完成任何计算。
2.神经元的状态可以取[0,1]中的连续值,如用以下函数代替θ(x):⎩⎨⎧<≥=-=+∑00011x x x t S w t S i jj ij i )())(()(θμθ∑=>+=-j j ij h t S w h eh g )()(0 11 2ββ三、多层前传网络1.特点:➢ 相邻层全互连➢ 同层没有连接➢ 输出与输入没有直接联系2.各层神经元个数的确定输入层、输出层的神经元个数由研究对象的输入、输出信息来确定。
隐含层:101 ≤≤++=l l n n n I O H ,3.符号说明μ:表示一个确定的已知样品的标号;i, j, k :分别对应于输出层、隐含层、输入层的下标;:μi O 将第μ个样品的原始数据输入网络时,相应输出单元状态; :μj H 将第μ个样品的原始数据输入网络时,相应隐含单元状态; :μk I 将第μ个样品的原始数据输入网络时,相应输入单元数据;μi Wi1 ∑ Wi2W i3 I 2 H 2 H 3 I 3 O 1 H 1 I 4I 1 O 2 输出层O i 输入层I k隐含层H j权W jk权W ijw ij :从隐含层第j 个神经元到输出层第i 个神经元的联接强度; w jk :从输入层第k 个神经元到隐含层第j 个神经元的联接强度;4.网络数据流程对应于输入层的输入:μμμI n I I I ,,, 21隐单元j 的输入是:∑=k k jk j I w h μμ对应的输出是:)()(∑==k k jk j j I w g h g H μμμ 输出单元i 收到的迭加信号是:∑∑∑==j kk jk ij j j ij i I w g w H w o )(μμμ 输出单元i 的输出是:))(()()(∑∑∑===j k k jk ij j jij i i I w g w g H w g o g O μμμμ显然输出是所有权w={w ij ,w jk }的函数 四、向后传播算法(Back-Propagation)设样品μ在输出单元i 上的理想输出为μi T ,则函数:∑∑∑∑-=-=μμμμμμ,,))](([][)(i k kjk j ij ii i iI w g w g T O T w E 221221表示了在一定的权下,理想输出与实际输出的差异。
因此,确定权w 的问题化为求E(w)的极小值问题。
可以采用最速下降算法。
最速下降算法步骤:1)任取初始点w 0,计算出w 0的负梯度方向:-▽E(w 0)2)取新点w 1=w 0+△w=w 0-η▽E(w 0),使E (w 1)<E(w 0)3)判断其中△w 的计算如下:对于隐单元到输出单元的权的修正量为μμμμμμμμδηηηj i j i i i w E ij H H h g O T w ij ∑∑='-=-=∂∂)(][∆其中])[(μμμμδi i i i O T h g -'= 对于输入单元到隐单元的权的修正量为μμμμμμμμμμμμμμδηδηηηημμk j k j ij i i k j ij i i i iw H H E w E jk I I h g w I h g w h g O T w jk j jjk ∑∑∑∑='=''-==-=∂∂∂∂∂∂)()()(][,, ∆ 其中μμμδδiij i j j w h g ∑'=)(五、Matlab 中 BP 神经网络的实现1.BP 神经网络的初始化各层神经元个数,各层神经元之间的连接强度, 各层神经元的传递函数1).人工初始化 如下例例 1.有一个三输入两层神经网络,隐层有两个对数S 形神经元,输出层有一个正切S 形神经元,用于预测两个一元目标矢量.p=[0 0.5 -0.2;1 0.2 0.3]';%输入t=[0.5,-0.5];%理想输出r=3;s1=2;s2=1;%输入层、隐层、输出层的神经元个数 w1=rands(s1,r);%输入层到隐层的连接强度b1=rands(s1,1); %隐层的阈值w2=rands(s2,s1); %隐层到输出层的连接强度b2=rands(s2,1);%输出层的阈值lr=1;%学习速率for epoch=1:40 %训练网络40次a1=logsig(w1*p,b1); %隐层的输出a2=tansig(w2*a1,b2); %输出层的输出e=t-a2; %与理想输出的误差d2=deltatan(a2,e); %输出层的δ值d1=deltalog(a1,d2,w2); %隐层的δ值[dw1,db1]=learnbp(p,d1,lr); %进行学习,获取隐层连接强度、阈值的调整值w1=w1+dw1; %调整隐层的连接强度b1=b1+db1; %调整隐层的阈值[dw2,db2]=learnbp(a1,d2,lr); %进行学习,获取输出层连接强度、阈值的调整值w2=w2+dw2; %调整输出层的连接强度 b2=b2+db2; %调整输出层阈值end;a1=logsig(w1*p,b1); %学习后,对网络进行验证a2=tansig(w2*a1,b2)2).调用系统提供的函数➢格式:[w1,b1,w2,b2]=initff(p,s1,f1,s2,f2)[w1,b1,w2,b2]=initff(p,s1,f1,t,f2)➢功能:至多三层的BP网络初始化,得到每层的权值和阈值。
➢说明:1)P为输入向量,P中每一行必须包含网络期望输入的最大值和最小值,这样才能合理地初始化连接强度与阈值。
2)T为理想输出向量3)S1为隐层的神经元数,S2为输出层的神经元数,可用理想输出向量T代替S2,此时S2=T向量的行数4)F1为隐层传递函数名,F2为输出层传递函数名例2例2应用两层BP网络进行函数逼近,其中隐层神经元个数设为5个clf reset;figure(gcf)colordef(gcf,'none')setfsize(500,200);echo onclc%INITFF - Initializes a feed-forware network.%TRAINBP - Trains a feed-forward network with backpropagation.% SIMUFF - Simulates a feed-forward network.% FUNCTION APPROXIMATION WITH TANSIG/PURELIN NETWORK:%Using the above functions two-layer network is trained%to respond to specific inputs with target outputs.% DEFINING A VECTOR ASSOCATION PROBLEM% ====================================%P defines twenty-one 1-element input vectors (column vectors):P = -1:.1:1;% T defines the associated 1-element targets (column vectors):T=[-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 ....3072 .3960 .3449 .1816 -.0312 -.2189 -.3201];% PLOTTING THE DATA POINTS% ========================% Here the data points are plotted:plot(P,T,'+');title('Training Vectors');xlabel('Input Vector P');ylabel('Target Vector T');% The function the neural network learns must pass through % these data points.pause % Strike any key to design the network...clc% DESIGN THE NETWORK% ==================% A two-layer TANSIG/PURELIN network will be trained.%The number of hidden TANSIG neurons should reflect the% complexity of the problem.S1 = 5;%INITFF is used to initialize the weights and biases for%the TANSIG/PURELIN network.[w1,b1,w2,b2] = initff(P,S1,'tansig',T,'purelin'); echo off% TRAINING THE NETWORK% ====================%TRAINBP uses backpropagation to train feed-forward networks. df = 10; % Frequency of progress displays (in epochs). me = 8000; % Maximum number of epochs to train.eg = 0.02; % Sum-squared error goal.lr = 0.01; % Learning rate.tp = [df me eg lr];%Training begins...please wait (this takes a while!)... [w1,b1,w2,b2,ep,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',P,T,tp); % ...and finally finishes.%TRAINBP has returned new weight and bias values, the number % of epochs trained EP, and a record of training errors TR. pause % Strike any key to see a plot of errors...clc% PLOTTING THE ERROR CURVE% ========================%Here the errors are plotted with respect to training epochs: ploterr(tr,eg);pause % Strike any key to use the function approximator...clc% USING THE PATTERN ASSOCIATOR% ============================% We can now test the associator with one of the origonal% inputs, 0.5, and see if it returns the target, 0.3960.p = 0.5;a = simuff(p,w1,b1,'tansig',w2,b2,'purelin')% The result is fairly close. Training to a lower error % goal would result in a closer approximation.echo offdisp('End of DEMOBP2')2、传递函数➢PURELIN 纯线性形函数格式: PURELIN(Z,B)成批处理向量Z,并提供阈值B➢对数S形LOGSIG函数格式:LOGSIG(Z,B)➢双曲正切S形TANSIG函数格式:TANSIG(Z,B)3.反向传播误差导数函数1)1)DELTALIN(A,E)计算线性输出层的误差导数阵,A、E分别为这一层的输出向量与误差2)2)DELTALIN(A,D,W)3)2)计算线性隐层的误差导数阵,D为下一层的δ向量,W为与下一层的连接强度4)3)DELTALOG(A,E)5)4)DELTALOG(A,D,W)6)5)DELTATAN(A,E)7)6)DELTATAN(A,D,W)4、BP网络的学习规则1)反向传播学习规则格式: LEARNBP(P,D,LR)[DW,DB]=LEARNBP(P,D,LR)其中P为本层的输入向量,D为δ向量(可以通过反向传播误差导数函数计算),LR为学习速率可同时得到连接强度的修正矩阵DW与阈值修正向量DB。