神经网络基于BP网络的多层感知器实验报告
- 格式:docx
- 大小:53.89 KB
- 文档页数:24
神经网络基于BP网络的多层感知器实验报告二、基于BP网络的多层感知器一:实验目的:1、理解多层感知器的工作原理2、通过调节算法参数了解参数的变化对于感知器训练的影响3、了解多层感知器局限性二:实验原理:BP的基本思想:信号的正向传播误差的反向传播–信号的正向传播:输入样本从输入层传入,经各隐层逐层处理后,传向输出层。
–误差的反向传播:将输入误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号来作为修正各单元权值的依据。
1、基本BP算法的多层感知器模型:2、BP学习算法的推导:当网络输出与期望输出不等时,存在输出误差E将上面的误差定义式展开至隐层,有进一步展开至输入层,有调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即η∈(0,1)表示比例系数,在训练中反应学习速率 BP算法属于δ学习规则类,这类算法被称为误差的梯度下降(Gradient Descent)算法。
<实验步骤>1、用Matlab编程,实现解决该问题的单样本训练BP网络,设置一个停止迭代的误差Emin和最大迭代次数。
在调试过程中,通过不断调整隐层节点数,学习率η,找到收敛速度快且误差小的一组参数。
产生均匀分布在区间[-4,4]的测试样本,输入建立的模型得到输出,与Hermit多项式的期望输出进行比较计算总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。
(要求误差计算使用RME,Emin 设置为0、1)程序如下:function dyb %单样本程序 clc; close all; clear; x0=[1:;-4:0、08:4];%样本个 x0(1,:)=-1; x=x0'; yuzhi=0、1;%阈值j=input('请输入隐层节点数 j = ');%隐层节点数 n=input('请输入学习效率 n = ');%学习效率 w=rand(1,j); w=[yuzhi,w]; %输出层阈值 v=rand(2,j); v(1,:)=yuzhi;%隐层阈值err=zeros(1,); wucha=0; zhaosheng=0、01*randn(1,);%噪声erro=[]; ERRO=[];%误差,为画收敛曲线准备 Emin=0、1;d=zeros(1,); for m=1: d(m)=hermit(x(m,2));%期望 end;o=zeros(1,); j=zeros(1,j); =zeros(1,j); p=1; q=1; azc=0; acs=0; for z=1:5 while q<30000 Erme=0; for p=1:y=zeros(1,j); for i=1:j j(1,i)=x(p,:)*v(:,i);y(1,i)=1/(1+exp(-j(1,i))); end; y=[-1 y];o(p)=w*y'+zhaosheng(p);%噪声 wucha = d(p)-o(p);err(1,p)=1/2*wucha^2; erro=[erro,wucha]; for m=1:j+1w(1,m)=w(1,m)+n*wucha*y(1,m); end; for m=1:jv(:,m)=v(:,m)+n*wucha*w(1,m)*y(1,m)*(1-y(1,m))*x(p,:)'; end q=q+1; end; for t=1:; Erme=Erme+err(1,t); end;err=zeros(1,); Erme=sqrt(Erme/); ERRO=[ERRO,Erme]; ifErme<Emin break; end; end; azc=azc+Erme; acs=acs+q; end disp('最终误差:'); pinjunwucha=1/5*azc figure(1);plot(x(:,2),d,'--r'); hold on; plot(x(:,2),o,'--b'); disp('次数:'); pjcx=1/5*acs figure(2); plot(ERRO); figure(3); plot(x(:,2),d,'--rp');endfunction F =hermit(x)%hermit子函数 F =1、1*(1-x+2*x^2)*exp(-x^2/2);end运行结果如下:表格1、单样本BP算法平均最小误差学习率结点数0、050、070、10、120、150、1880、09650、08590、019530、09450、08740、0925100、09680、09440、09830、09200、08210、0982120、08860、08560、08850、09460、08340、0928150、09150、09270、08780、09240、07380、08442、实现解决该问题的批处理训练BP网络,调整参数如上。
作业8编程题实验报告(一)实验内容:实现多层前馈神经网络的反向传播学习算法。
使用3.2节上机生成的数据集对神经网络进行训练和测试,观察层数增加和隐层数增加是否会造成过拟合。
(二)实验原理:1)前向传播:以单隐层神经网络为例(三层神经网络),则对于第k 个输出节点,输出结果为:在实验中采用的激励函数为logistic sigmoid function 。
考虑每一层节点中的偏差项,所以,在上式中:)()(00,1l l j b w x ==在实验中,就相应的需要注意矢量形式表达式中,矢量大小的调整。
2)BP 算法:a) 根据问题,合理选择输入节点,输出节点数,确定隐层数以及各隐层节点数;b) 给每层加权系数,随机赋值;c) 由给定的各层加权系数,应用前向传播算法,计算得到每层节点输出值,并计算对于所有训练样本的均方误差;d) 更新每层加权系数:其中,⎪⎩⎪⎨⎧⋅⋅⋅-=∑+j i ji l i l i i i l i a h w a h d y 其它层,最后一层)('(),(')()1()()(δδe) 重复c),d )迭代过程,直至迭代步数大于预设值,或者每次迭代误差变化值小于预设值时,迭代结束,得到神经网络的各层加权系数。
(三)实验数据及程序:1)实验数据处理:a) 训练样本输入节点数据:在实验中,所用数据中自变量x 的取值,为0—1的25个随机值,为了后续实验结果的分析,将其从小到大排序,并加上偏差项,神经网络的输出节点最终训练结果,即为训练得到的回归结果;b) 训练样本标签值:在实验中,采用的激励函数为logistic sigmoid function ,其值域为[0,1],所以,在神经网络训练前,需要对训练样本标签值进行归一化处理;c) 神经网络输出节点值:对训练样本标签值进行了归一化处理,相应的,对于输出节点,需要反归一化处理。
2)实验程序:实现函数:[Theta]=BP(input_layer_size,hidden_layer_size,hidden_layer_num,num_labels,Niter,leta,X,Y)输入参数:input_layer_size:输入节点数;hidden_layer_size:隐层节点数(对于单隐层,输入值为一数值,对于多隐层,为一矢量);hidden_layer_num:隐层数;num_labels:输出节点数;Niter:为预设的迭代步数;leta:学习速率,即更新步长;X,Y:分别为训练样本输入特征值以及标签值。
学号:1001314197人工神经网络实验报告实验一感知器和BP网络设计及应用实验1 感知器和BP网络设计及应用题目一初步认识Matlab人工神经网络工具箱一、实验目的初步了解人工神经网络工具箱。
二、实验容认识人工神经网络工具箱包含的主要功能函数及分类。
三、实验步骤(1) 在命令窗口键入help nnet(2) 描述人工神经网络工具箱划分的主要函数模块,并在每类下挑选3-4个函数,说明其主要功能。
四、实验结果>> help nnetNeural Network ToolboxVersion 6.0 (R2008a) 23-Jan-20081.Graphical user interface functions.图形用户界面函数nnstart - Neural Network Start GUI 神经网络启动图形用户界面GUInctool - Neural network classification tool 神经网络分类工具nftool - Neural Network Fitting Tool 神经网络拟合工具nntraintool - Neural network training tool 神经网络训练工具work creation functions. 网络生成函数cascadeforwardnet – Cascade-forward neural network. 级联神经网络competlayer - Competitive neural layer. 竞争神经层distdelaynet - Distributed delay neural network. 分布式延迟神经网络elmannet - Elman neural network. Elman 神经网络ing networks. 网络使用network - Create a custom neural network. 创建一个定制的神经网络sim - Simulate a neural network. 模拟神经网络init - Initialize a neural network. 初始化一个神经网络adapt - Allow a neural network to adapt. 神经网络的适应train - Train a neural network. 训练一个神经网络4.Simulink support. 仿真支持gensim - Generate a Simulink block to simulate a neural network. 生成Simulink模块来模拟神经网络setsiminit - Set neural network Simulink block initial conditions 设置神经网络Simulink模块初始条件getsiminit - Get neural network Simulink block initial conditions 获得神经网络Simulink模块初始条件neural - Neural network Simulink blockset. 神经网络Simulink 模块集5.Training functions. 训练函数trainb - Batch training with weight & bias learning rules. 批处理具有权重和偏差学习规则的训练trainbfg - BFGS quasi-Newton backpropagation. BFGS 拟牛顿反向传播trainbr - Bayesian Regulation backpropagation. 贝叶斯规则的反向传播trainbu - Unsupervised batch training with weight & bias learning rules. 无监管的批处理具有权重和偏差学习规则的训练6.Plotting functions. 绘图函数plotconfusion - Plot classification confusion matrix. 图分类混淆矩阵ploterrcorr - Plot autocorrelation of error time series. 误差自相关时间序列图ploterrhist - Plot error histogram. 误差直方图plotfit - Plot function fit. 绘图功能(函数)配合题目2 感知器的功能及初步设计一、实验目的掌握感知器的功能。
人工神经网络是一种模仿人脑结构及其功能的信息处理系统,能提高人们对信息处理的智能化水平。
它是一门新兴的边缘和交叉学科,它在理论、模型、算法等方面比起以前有了较大的发展,但至今无根本性的突破,还有很多空白点需要努力探索和研究。
1人工神经网络研究背景神经网络的研究包括神经网络基本理论、网络学习算法、网络模型以及网络应用等方面。
其中比较热门的一个课题就是神经网络学习算法的研究。
近年来己研究出许多与神经网络模型相对应的神经网络学习算法,这些算法大致可以分为三类:有监督学习、无监督学习和增强学习。
在理论上和实际应用中都比较成熟的算法有以下三种:(1) 误差反向传播算法(Back Propagation,简称BP 算法);(2) 模拟退火算法;(3) 竞争学习算法。
目前为止,在训练多层前向神经网络的算法中,BP 算法是最有影响的算法之一。
但这种算法存在不少缺点,诸如收敛速度比较慢,或者只求得了局部极小点等等。
因此,近年来,国外许多专家对网络算法进行深入研究,提出了许多改进的方法。
主要有:(1) 增加动量法:在网络权值的调整公式中增加一动量项,该动量项对某一时刻的调整起阻尼作用。
它可以在误差曲面出现骤然起伏时,减小振荡的趋势,提高网络训练速度;(2) 自适应调节学习率:在训练中自适应地改变学习率,使其该大时增大,该小时减小。
使用动态学习率,从而加快算法的收敛速度;(3) 引入陡度因子:为了提高BP 算法的收敛速度,在权值调整进入误差曲面的平坦区时,引入陡度因子,设法压缩神经元的净输入,使权值调整脱离平坦区。
此外,很多国内的学者也做了不少有关网络算法改进方面的研究,并把改进的算法运用到实际中,取得了一定的成果:(1) 王晓敏等提出了一种基于改进的差分进化算法,利用差分进化算法的全局寻优能力,能够快速地得到BP 神经网络的权值,提高算法的速度;(2) 董国君等提出了一种基于随机退火机制的竞争层神经网络学习算法,该算法将竞争层神经网络的串行迭代模式改为随机优化模式,通过采用退火技术避免网络收敛到能量函数的局部极小点,从而得到全局最优值;(3) 赵青提出一种分层遗传算法与BP 算法相结合的前馈神经网络学习算法。
BP神经网络在多传感器数据融合中的应用摘要:提出一种基于多传感器神经网络融合的机动目标估计算法,利用BP 神经网络的函数逼近能力,将BP神经网络与卡尔曼滤波器相结合构成一个估计器,该算法可以对来自经不同噪声污染的传感器信息加以充分利用,在改善估计性能的同时又保持估计滤波的计算结构尽可能简单。
仿真结果表明所提出的估计滤波算法在估计应用上优于一般的加权估计算法,提高了估计算法的精度。
关键词:BP神经网络卡尔曼滤波数据融合一、引言数据融合是指对来自多个传感器的信息进行融合,也可以将来自多个传感器的信息和人机界面的观测事实进行信息融(这种融合通常是决策级融合)。
提取征兆信息,在推理机作用下.将征兆与知识库中的知识匹配,做出故障诊断决策,提供给用户。
在基于信息融合的故障诊断系统中可以加入自学习模块.故障决策经自学习模块反馈给知识库.并对相应的置信度因子进行修改,更新知识库。
同时.自学习模块能根据知识库中的知识和用户对系统提问的动态应答进行推理。
以获得新知识。
总结新经验,不断扩充知识库,实现专家系统的自学习功能。
多传感器数据融合是20世纪70年代以来发展起来的一门新兴边缘学科,目前已经成为备受人们关注的热门领域。
多传感器数据融合是一门新兴技术,在军事和非军事领域中都碍到了广泛应用、多传感器数据融合技术汲取了人工智能、模式识别、统计估计等多门学科的相关技术,计算机技术的快速发展以及数据融合技术的成熟为数据融合的广泛应用提供了基础。
多传感器信息融合状态估计是多传感器信息融合学科的一个重要分支。
多传感器数据融合的基本原理就像是人脑综合处理信息的过程一样,它充分利用多个传感器资源,通过对各种传感器及其观测信息的合理支配与使用,将各传感器在空间和时间上的互补与冗余信息依据某种优化准则组合起来,产生对观测环境的一致性解释和描述。
目前有两种常用的信息融合方法:一种方法是状态融合方法,另一种方法是观测融合方法。
状态融合方法又可分为集中式kalman滤波[1]和分散式kalman滤波。
BP神经网络实验报告一、引言BP神经网络是一种常见的人工神经网络模型,其基本原理是通过将输入数据通过多层神经元进行加权计算并经过非线性激活函数的作用,输出结果达到预测或分类的目标。
本实验旨在探究BP神经网络的基本原理和应用,以及对其进行实验验证。
二、实验方法1.数据集准备本次实验选取了一个包含1000个样本的分类数据集,每个样本有12个特征。
将数据集进行标准化处理,以提高神经网络的收敛速度和精度。
2.神经网络的搭建3.参数的初始化对神经网络的权重和偏置进行初始化,常用的初始化方法有随机初始化和Xavier初始化。
本实验采用Xavier初始化方法。
4.前向传播将标准化后的数据输入到神经网络中,在神经网络的每一层进行加权计算和激活函数的作用,传递给下一层进行计算。
5.反向传播根据预测结果与实际结果的差异,通过计算损失函数对神经网络的权重和偏置进行调整。
使用梯度下降算法对参数进行优化,减小损失函数的值。
6.模型评估与验证将训练好的模型应用于测试集,计算准确率、精确率、召回率和F1-score等指标进行模型评估。
三、实验结果与分析将数据集按照7:3的比例划分为训练集和测试集,分别进行模型训练和验证。
经过10次训练迭代后,模型在测试集上的准确率稳定在90%以上,证明了BP神经网络在本实验中的有效性和鲁棒性。
通过调整隐藏层结点个数和迭代次数进行模型性能优化实验,可以发现隐藏层结点个数对模型性能的影响较大。
随着隐藏层结点个数的增加,模型在训练集上的拟合效果逐渐提升,但过多的结点数会导致模型的复杂度过高,容易出现过拟合现象。
因此,选择合适的隐藏层结点个数是模型性能优化的关键。
此外,迭代次数对模型性能也有影响。
随着迭代次数的增加,模型在训练集上的拟合效果逐渐提高,但过多的迭代次数也会导致模型过度拟合。
因此,需要选择合适的迭代次数,使模型在训练集上有好的拟合效果的同时,避免过度拟合。
四、实验总结本实验通过搭建BP神经网络模型,对分类数据集进行预测和分类。
电气工程学院神经网络实验报告院系:电气工程学院专业:电气工程及其自动化实验二基于BP网络的多层感知器一实验目的:1.理解基于BP网络的多层感知器的工作原理2.通过调节算法参数的了解参数的变化对BP多层感知器训练的影响3.了解BP多层感知器的局限性二实验内容:1.根据实验内容推导出输出的计算公式以及误差的计算公式2.使用Matlab编程实现BP多层感知器3.调节学习率η及隐结点的个数,观察对于不同的学习率、不同的隐结点个数时算法的收敛速度4.改用批处理的方法实验权值的收敛,并加入动量项来观察批处理以及改进的的算法对结果和收敛速度的影响。
三.实验原理以及过程的推导1. 基本BP 算法的多层感知器模型下面所示是一个单输入单输出的BP多层感知器的模型,它含有一个隐层。
输出O输出层X0 X下面对误差和权值的调整过程进行推导对于单样本的输入X i则隐层的输出:y i=f1(net j);net j=(x i*v i)输出层的输出:O=f2(net);net=(w i*y i)变换函数:1f1=xe-1+f2=x;当网络输出与期望输出不等时,存在输出误差E1(d-o)2;E=2计算各层的误差:把误差分配到各层以调整各层的权值,所以,各层权值的调整量等于误差E对各权值的负偏导与学习率的乘积,计算得到对权值W 和权值V 的调整量如下: 将上面的式子展开到隐层得: E=21(d-o)2=21[d- f 2(net)]=21[d-f 2( iji i iy w ∑==1)]将上式展开到输入层得: E=21(d-o)2=21[d- f 2(net)]=21[d-f 2( ij i i i w∑==1f 1(i ji i i x v ∑==1))]调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即Δw j =-jW E ∂ηΔv j =-jVE∂η计算得到对各权值的调整为:Δw j =η*(d(1,p)-o(1,p))*y(1,i)Δv j = *(d(1,p)-o(1,p))*w(1,i)*y(1,i)*(1-y(1,i))*x(1,p)其中P 为第P 个样本:四 实验步骤Step 1 初始化对权值矩阵W 、V 赋随机数,将样本模式计数器p 和训练次数计数器q 置于1,误差E 置0,学习率η设为0~1 内的小数,网络训练后的精度Emin 设为一个正的小数;Step 2 输入训练样本对,计算各层输出用当前样本X p 、d p 对向量数组X 、d 赋值,用下式计算Y 和O 中各分量 y i =f 1(net j );net j=(x i*v i)O=f2(net j);net=(w i*y i)Step 3 计算网络输出误差设共有P 对训练样本,网络对于不同的样本具有不同的误差2Step 4 计算各层误差信号:各层的误差信号为误差E对各层权值的偏导Step 5 调整各层权值Δw=η*(d(1,p)-o(1,p))*y(1,i)Δv=*(d(1,p)-o(1,p))*w(1,i)*y(1,i)*(1-y(1,i))*x(1,p)Step 6 检查是否对所有样本完成一次轮训若p<P,计算器p=p+1,q=q+1,返回Step 2, 否则转到Step 7Step 7 检查网络总误差是否达到精度要求当用E RME作为网络的总误差时,若满足E RME<E min,训练结束,否则E 置0,p 置1,返回Step 2。
基于神经网络的数字识别系统一、实验目的通过对本系统的学习开发,对计算机人工智能和神经网络有一定的认识,了解人工智能和网络神经学习的基本方法和思路。
构建BP网络实例,熟悉前馈网络的原理及结构。
二、实验原理反向传播网络(Back propagation Network,简称BP网络)是对非线形可微分函数进行权值训练的多层前向网络。
BP网络可以看作是对多层感知器网络的扩展,即信息的正向传播及误差数据的反向传递。
BP网络主要可以应用于模式分类、函数逼近以及数据压缩等等。
这里使用了一种较为简单的BP网络模型,并将其应用于一个实例:数字0到9的识别。
反向传播(BP)算法是一种计算单个权值变化引起网络性能变化值的较为简单的方法。
BP算法过程从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正。
BP网络不仅含有输入节点和输出节点,而且含有一层或多层隐(层)节点。
输入信号先向前传递到隐节点,经过作用后,再把隐节点的输出信息传递到输出节点,最后给出输出结果。
网络拓扑结构三、实验条件1.执行环境在装有Visual C++ 6.0运行库的Windows XP系统上运行。
2.编译环境Microsoft Visual C++ 6.0 。
3.运行方式该程序的可执行文件名为:LwNumRec.exe双击运行进入操作界面:然后进入具体的操作:(1)训练网格首先,打开图像(256色):其次输入归一化宽度与高度:再次对Bp网络参数进行设置:最后进行训练,并输出训练结果:(2)进行识别首先,打开图像(256色);其次输入归一化宽度与高度;再次,进行归一化处理,点击“一次性处理”(相当于手动逐步执行步骤1~8);处理后结果:最后,点击“识”或者使用菜单找到相应项来进行识别。
识别的结果为:1.通过BP网络各项参数的不同设置,观察BP算法的学习效果。
2.观察比较BP网络拓扑结构及其它各项参数变化对于训练结果的影响。
神经网络及应用实验报告实验二、基于BP网络的多层感知器一:实验目的:1. 理解多层感知器的工作原理2. 通过调节算法参数了解参数的变化对于感知器训练的影响3. 了解多层感知器局限性二:实验原理:BP的基本思想:信号的正向传播误差的反向传播–信号的正向传播:输入样本从输入层传入,经各隐层逐层处理后,传向输出层。
–误差的反向传播:将输入误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号来作为修正各单元权值的依据。
1.基本BP算法的多层感知器模型:学习算法的推导:当网络输出与期望输出不等时,存在输出误差E将上面的误差定义式展开至隐层,有进一步展开至输入层,有调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即η∈(0,1)表示比例系数,在训练中反应学习速率BP算法属于δ学习规则类,这类算法被称为误差的梯度下降(Gradient Descent)算法。
<实验步骤>1. 用Matlab编程,实现解决该问题的单样本训练BP网络,设置一个停止迭代的误差E min和最大迭代次数。
在调试过程中,通过不断调整隐层节点数,学习率η,找到收敛速度快且误差小的一组参数。
产生均匀分布在区间[-4,4]的测试样本,输入建立的模型得到输出,与Hermit多项式的期望输出进行比较计算总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。
(要求误差计算使用RME,Emin 设置为)程序如下:function dyb %单样本程序clc;close all;clear;x0=[1:101;-4::4];%样本101个x0(1,:)=-1;x=x0';yuzhi=;%阈值j=input('请输入隐层节点数 j = ');%隐层节点数 n=input('请输入学习效率 n = ');%学习效率w=rand(1,j);w=[yuzhi,w]; %输出层阈值v=rand(2,j);v(1,:)=yuzhi;%隐层阈值err=zeros(1,101);wucha=0;zhaosheng=*randn(1,101);%噪声erro=[];ERRO=[];%误差,为画收敛曲线准备Emin=;d=zeros(1,101);for m=1:101d(m)=hermit(x(m,2));%期望end;o=zeros(1,101);netj=zeros(1,j);net=zeros(1,j);p=1;q=1;azc=0;acs=0;for z=1:5while q<30000Erme=0;for p=1:101y=zeros(1,j);for i=1:jnetj(1,i)=x(p,:)*v(:,i);y(1,i)=1/(1+exp(-netj(1,i)));y=[-1 y];o(p)=w*y'+zhaosheng(p);%噪声wucha = d(p)-o(p);err(1,p)=1/2*wucha^2;erro=[erro,wucha];for m=1:j+1w(1,m)=w(1,m)+n*wucha*y(1,m);end;for m=1:jv(:,m)=v(:,m)+n*wucha*w(1,m)*y(1,m)*(1-y(1,m))*x(p,:)'; endq=q+1;end;for t=1:101;Erme=Erme+err(1,t);err=zeros(1,101);Erme=sqrt(Erme/101); ERRO=[ERRO,Erme];if Erme<Emin break; end;end;azc=azc+Erme;acs=acs+q;enddisp('最终误差:');pinjunwucha=1/5*azcfigure(1);plot(x(:,2),d,'--r');hold on;plot(x(:,2),o,'--b');disp('次数:');pjcx=1/5*acsfigure(2);plot(ERRO);figure(3);plot(x(:,2),d,'--rp');endfunction F = hermit(x)%hermit子函数 F = *(1-x+2*x^2)*exp(-x^2/2); end运行结果如下:-4-3-2-101234训练样本与测试样本input x o u t p u t y表格1. 单样本BP 算法平均最小误差2. 实现解决该问题的批处理训练BP 网络,调整参数如上。
产生均匀分布在区间[-4,4]的测试样本,输入建立的模型得到输出,与Hermit 多项式的期望输出进行比较计算总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。
程序如下:function pcl %批处理close all;clc;x=[-4::4];%样本101个j=input('请输入隐层节点数 j = ');%隐层节点数 n=input('请输入学习效率 n = ');%学习效率a=;%动量系数w=rand(1,j);v=rand(1,j);err=zeros(1,101);wucha=0;zhaosheng=*randn(1,101);%噪声erro=[];ERRO=[];%误差,为画收敛曲线准备Emin=;d=zeros(1,101);for m=1:101d(1,m)=hermit(x(m));%期望 end;o=zeros(1,101);netj=zeros(1,j);net=zeros(1,j);y=zeros(1,j);p=1;q=1;azc=0;acs=0;for z=1:5while q<30000Erro=0;Erme=0;for p=1:101for i=1:jnetj(1,i)=v(1,i)*x(1,p);y(1,i)=1/(1+exp(-netj(1,i))); end;o(1,p)=w*y'+zhaosheng(p);%噪声wucha=d(1,p)-o(1,p);%误差err(1,p)=1/2*wucha^2;erro=[erro,wucha];q=q+1;end;for t=1:101;Erro=Erro+erro(t);Erme=Erme+err(1,t);end;erro=[];for m=1:j;w(1,m)=w(1,m)+n*Erro*y(1,m);v(1,m)=v(1,m)+n*Erro*w(1,m)*y(1,m)*(1-y(1,m))*x(1,p); end;Erme=sqrt(Erme/101);ERRO=[ERRO,Erme];if Erme<Emin break;end;end;azc=azc+Erme;acs=acs+q;enddisp('平均误差:');pjwc=1/5*azcfigure(1);plot(x,d,'--r');hold on;plot(x,o,'--b');disp('平均次数:');pjcs=1/5*acsfigure(2);plot(ERRO);figure(3);plot(x,d);endfunction F = hermit(x) %hermit子函数F = *(1-x+2*x^2)*exp(-x^2/2);end运行结果如下:表格2. 批处理BP算法平均最小误差5810123. 对批处理训练BP算法增加动量项调整参数如上,记录结果,并与没有带动量项的批处理训练BP算法的结果相比较程序如下:function jdlx %加动量项close all;clc;x=[-4::4];%样本101个j=input('请输入隐层节点数 j = ');%隐层节点数n=input('请输入学习效率 n = ');%学习效率a=;%动量系数w=rand(1,j);v=rand(1,j);err=zeros(1,101);wucha=0;zhaosheng=*randn(1,101);%噪声 erro=[];ERRO=[];%误差,为画收敛曲线准备 Emin=;d=zeros(1,101);for m=1:101d(1,m)=hermit(x(m));%期望 end;o=zeros(1,101);netj=zeros(1,j);net=zeros(1,j);y=zeros(1,j);p=1;q=1;acs=0;for z=1:5while q<30000Erro=0;Erme=0;for p=1:101for i=1:jnetj(1,i)=v(1,i)*x(1,p);y(1,i)=1/(1+exp(-netj(1,i))); end;o(1,p)=w*y'+zhaosheng(p);%噪声wucha=d(1,p)-o(1,p);%误差err(1,p)=1/2*wucha^2;erro=[erro,wucha];q=q+1;for t=1:101;Erro=Erro+erro(t);Erme=Erme+err(1,t);end;erro=[];for m=1:j;if m==1w(1,m)=w(1,m)+n*Erro*y(1,m);elsew(1,m)=w(1,m)+n*Erro*y(1,m)+a*w(1,m-1);endv(1,m)=v(1,m)+n*Erro*w(1,m)*y(1,m)*(1-y(1,m))*x(1,p); end;Erme=sqrt(Erme/101);ERRO=[ERRO,Erme];if Erme<Emin break; end;end;azc=azc+Erme;acs=acs+q;enddisp('平均误差:');pjwc=1/5*azcfigure(1);plot(x,d,'--r');hold on;plot(x,o,'--b');disp('平均次数:');pjcs=1/5*acsfigure(2);plot(ERRO);figure(3);plot(x,d);endfunction F = hermit(x) %hermit 子函数F = *(1-x+2*x^2)*exp(-x^2/2);end运行结果如下:-4-3-2-101234训练样本与测试样本input xo u t p u t y4. 对批处理BP 算法改变参数:学习率η、迭代次数、隐层节点数,观察算法的收敛发散,以及测试误差的变化(对每个参数取几个不同参数,分别运行5次,结果取平均值)。