BP神经网络实验报告资料

合集下载

BP神经网络理论与实验结果

BP神经网络理论与实验结果

神经网络简介:神经网络是大脑的一个组成部分。

James 在1890年的《心理学》一书中这样描述神经网络的基本原理:大脑皮层每一点的活力是由其它点势能释放的综合效能产生的,这些势能与如下因素有关:(1)相关点的兴奋次数;(2)兴奋的强度;(3)与其不相连的其它点所接受的能量。

他的这一原理一直沿用至今。

到目前为止,神经网络的研究主要分为两个派别:一派主要包括生物学家、物理学家和心理学家等,他们研究的主要目的是给出大脑活动的描述和精细模型;另一派主要包括工程技术人员等,他们关心的是怎样利用神经网络的基本原理,来构造解决实际问题的算法,使得这些算法具有有效的计算能力,我们称之为神经网络的工程应用研究,或称为人工神经网络(artificial neural network, ANN ),简称为神经网络。

人工神经网络可以分为前向型和反馈型两类:前向型神经网络的特点是信息传递由后层神经元向前层神经元传递,同一层内的神经元之间没有信息交流;反馈型神经网络中的神经元之间不但相互作用,而且自身也有信息内耗。

BP 神经网络是一种多层前向神经网络,名字源于网络权值的调整规则采用的是后向传播学习算法(也称为反推学习规则),即BP 学习算法(back-propagation, BP )。

BP 学习算法是Rumelhart 等在1986年提出的。

至此以后,BP 神经网络得到了广泛的实际应用,据统计,80%~90%的神经网络模型都采用了BP 网络或者它的变形。

BP 神经网络理论BP 神经网络是一种单向传播的多层前向型网络,其结构如图所示。

由图可见,BP 网络是一种具有三层或三层以上的神经网络,包括输入层、中间层(隐层)和输出层。

上下层之间实现全连接,而每层神经元之间无连接。

当一对学习样本提供给网络后,神经元的激活值从输入层经各中间层向输出层传播,在输出层的各神经元获得网络的输入响应。

接下来,按照减少目标输出与误差的方向,从输出层经过各中间层逐步修正各连接权值,最后回到输入层,这种算法称为“误差逆传播算法”,即BP 算法,随着这种误差逆的传播修正不断进行,网络对输入模式响应的正确率也不断上升。

BP人工神经网络试验报告一

BP人工神经网络试验报告一

学号:北京工商大学人工神经网络实验报告实验一基于BP算法的XX及Matlab实现院(系)专业学生姓名成绩指导教师2011年10月一、 实验目的:1、 熟悉MATLAB 中神经网络工具箱的使用方法;2、了解BP 神经网络各种优化算法的原理;3、掌握BP 神经网络各种优化算法的特点;4、掌握使用BP 神经网络各种优化算法解决实际问题的方法。

二、实验内容:1 案例背景1.1 BP 神经网络概述BP 神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。

在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。

每一层的神经元状态只影响下一层神经元状态。

如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP 神经网络预测输出不断逼近期望输出。

BP 神经网络的拓扑结构如图1.1所示。

图1.1 BP 神经网络拓扑结构图图1.1中1x ,2x , ……n x 是BP 神经网络的输入值1y ,2y , ……n y 是BP 神经的预测值,ij ω和jk ω为BP 神经网络权值。

从图1.1可以看出,BP 神经网络可以看成一个非线性函数,网络输入值和预测值分别为该函数的自变量和因变量。

当输入节点数为n ,输出节点数为m 时,BP 神经网络就表达了从n 个自变量到m 个因变量的函数映射关系。

BP 神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。

BP 神经网络的训练过程包括以下几个步骤。

步骤1:网络初始化。

根据系统输入输出序列()y x ,确定网络输入层节点数n 、隐含层节点数l ,输出层节点数m ,初始化输入层、隐含层和输出层神经元之间的连接权值ij ω和jk ω,初始化隐含层阈值a ,输出层阈值b ,给定学习速率和神经元激励函数。

步骤2:隐含层输出计算。

根据输入向量x ,输入层和隐含层间连接权值ij ω以及隐含层阈值a ,计算隐含层输出H 。

式中, l 为隐含层节点数; f 为隐含层激励函数,该函数有多种表达形式,本章所选函数为:步骤3:输出层输出计算。

BP网络实验

BP网络实验

实验八 BP网络实验一、实验目的:理解反向传播网络的结构和原理,掌握反向传播算法对神经元的训练过程,了解反向传播公式。

通过构建BP网络实例,熟悉前馈网络的原理及结构。

二、实验原理反向传播(BP)算法是一种计算单个权值变化引起网络性能变化值的较为简单的方法。

BP算法过程从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正。

BP网络不仅含有输入节点和输出节点,而且含有一层或多层隐(层)节点。

输入信号先向前传递到隐节点,经过作用后,再把隐节点的输出信息传递到输出节点,最后给出输出结果。

三、实验条件:1BP网络演示程序。

2IE5.0以上版本,能连通Internet。

四、实验内容:1通过BP网络各项参数的不同设置,观察BP算法的学习效果。

2观察比较BP网络各项参数变化对于训练结果的影响。

五、实验步骤:1设置各层神经元个数设置。

用户点击下拉列表框选择输入、隐含、输出各层神经元个数,其中隐含层神经元个数自动设为输入层神经元个数(n)的2n+1个,然后再点击“确定”按钮,就可以看到所设置BP神经网络示意图以及系统随机生成默认的各层权值。

2学习参数设置,用户点击或拖动各滚动条分别设置样本误差、系统误差、学习速率、动量因子、迭代次数参数值。

3各层权值设置,如果用户使用系统随机生成默认的各层权值,则进行第4步。

用户或选中“自定义权”单选框自定义权各层权,在权值设置文本域设置权值后,单击其后“确定”按钮。

或双击下方列表框选项,相应权值会在权值设置文本域出现,则进行该权值修改后,单击其后“确定”按钮,修改后的权值会成功地列表框的原位修改。

后两种方式均会成功地激活“确定”按钮。

4学习样本设置,单文本域中出现“入层”字样表示在单文本域中设置输入层神经元信号向量。

单文本域中出现“出层”字样表示在单文本域中设置输出层神经元信号向量。

当输入已完成一个或一个以上模式对,“已设置完”单选框会成功地激活,如选中,则“校正网络”按钮会成功地激活。

神经网络基于BP网络的多层感知器实验报告

神经网络基于BP网络的多层感知器实验报告

神经网络基于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网络,调整参数如上。

BP神经网络实验报告

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:分别为训练样本输入特征值以及标签值。

实验报告 BP神经网络(2150230509)资料

实验报告 BP神经网络(2150230509)资料

深圳大学实验报告实验课程名称:神经网络与进化算法实验项目名称:BP神经网络对蝴蝶花进行分类学院:计算机与软件专业:软件工程报告人:文成学号:2150230509 同组人:无指导教师:朱安民实验时间:2016年4月1日至2016年4月7日实验报告提交时间:2016年4月7日教务处制初步熟悉BP神经网络,并设计一个BP神经网络对蝴蝶花进行分类二、实验内容设计一个BP神经网络对蝴蝶花进行分类,要求提交试验报告,内容包括:1.问题说明描。

2.数据述。

3.网络设计,包括输入层、隐含层、输出层节点个数的设计。

4.算法步骤。

5.编程,注意原始数据的通用化,数据输入的随机性。

6.网络训练,注意训练数据与验证数据分开。

7.网络验证7.结果分析,修改隐含层节点个数,修改学习率,分别对结果的影响。

8.体会,例如对下列问题的理解:1)BP学习算法的基本思想?2)BP网络设计中结点个数如何确定?3)为什么要对数据进行通用标准化,即转为[-1,1]?4)为什么要对训练数据的输入顺序进行随机化处理?5)为什么训练数据与测试数据要分开?注意:如果用MatLab编程序,将下列数据存放到一个文本文件(例如data.dat),编写程序存放到一个m文件中(例如你的学号.m),数据文件和程序文件放在同一文件夹下。

运行MatLab后,指定上述文件夹为工作区域,在命令行运行m文件。

前期工作:首先将实验数据分为两组,一组用于训练,一组用于测试。

分别保存在trainData.txt和testData.txt中(115组训练数据和35组测试数据)。

如图所示:各列数据代表的意义如下:序号种类叶长叶宽花长花宽(单位:cm)1 1 49 30 14 22 2 66 29 46 13…150 3 65 33 60 25(本实验设计一个BP网络,先用75%的数据对网络进行训练,然后用25%的数据进行检测。

)网络设计:输入层用4个节点,分别对应文件中的3/4/5/6列,隐层用3个节点。

人工智能实验报告-BP神经网络算法的简单实现[参照]

人工智能实验报告-BP神经网络算法的简单实现[参照]

人工神经网络是一种模仿人脑结构及其功能的信息处理系统,能提高人们对信息处理的智能化水平。

它是一门新兴的边缘和交叉学科,它在理论、模型、算法等方面比起以前有了较大的发展,但至今无根本性的突破,还有很多空白点需要努力探索和研究。

1人工神经网络研究背景神经网络的研究包括神经网络基本理论、网络学习算法、网络模型以及网络应用等方面。

其中比较热门的一个课题就是神经网络学习算法的研究。

近年来己研究出许多与神经网络模型相对应的神经网络学习算法,这些算法大致可以分为三类:有监督学习、无监督学习和增强学习。

在理论上和实际应用中都比较成熟的算法有以下三种:(1) 误差反向传播算法(Back Propagation,简称BP 算法);(2) 模拟退火算法;(3) 竞争学习算法。

目前为止,在训练多层前向神经网络的算法中,BP 算法是最有影响的算法之一。

但这种算法存在不少缺点,诸如收敛速度比较慢,或者只求得了局部极小点等等。

因此,近年来,国外许多专家对网络算法进行深入研究,提出了许多改进的方法。

主要有:(1) 增加动量法:在网络权值的调整公式中增加一动量项,该动量项对某一时刻的调整起阻尼作用。

它可以在误差曲面出现骤然起伏时,减小振荡的趋势,提高网络训练速度;(2) 自适应调节学习率:在训练中自适应地改变学习率,使其该大时增大,该小时减小。

使用动态学习率,从而加快算法的收敛速度;(3) 引入陡度因子:为了提高BP 算法的收敛速度,在权值调整进入误差曲面的平坦区时,引入陡度因子,设法压缩神经元的净输入,使权值调整脱离平坦区。

此外,很多国内的学者也做了不少有关网络算法改进方面的研究,并把改进的算法运用到实际中,取得了一定的成果:(1) 王晓敏等提出了一种基于改进的差分进化算法,利用差分进化算法的全局寻优能力,能够快速地得到BP 神经网络的权值,提高算法的速度;(2) 董国君等提出了一种基于随机退火机制的竞争层神经网络学习算法,该算法将竞争层神经网络的串行迭代模式改为随机优化模式,通过采用退火技术避免网络收敛到能量函数的局部极小点,从而得到全局最优值;(3) 赵青提出一种分层遗传算法与BP 算法相结合的前馈神经网络学习算法。

BP神经网络实验报告要交资料

BP神经网络实验报告要交资料

BP神经网络在红酒分类中的应用信息学院研15 谢青青 1043115267摘要:葡萄酒化学成分复杂,葡萄酒的质量是各种化学成分的综合反映,通常检测的方法有感官评定和常规的理化指标检测,感官评定虽然在生产中也有较多的应用,但是评测周期长,影响因素多,主观性强,重复性差,且无法快速检测。

使用BP神经网络对标准化且具有一致评判标准的数据进行训练,将来分类时仅仅使用理化指标进行评估,不带有人为主观因素。

一、BP网络简介BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

BP网络能学习和存贮大量的输入输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。

它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

下图就是一个简单的BP网络模型:BP神经网络的结构示意图二、BP神经元下图给出了第j个基本BP神经元(节点),它只模仿了生物神经元所具有的三个最基本也是最重要的功能:加权、求和与转移。

其中x1、x2…xi…xn分别代表来自神经元1、2…i…n的输入;wj1、wj2…wji…wjn则分别表示神经元1、2…i…n与第j个神经元的连接强度,即权值;bj 为阈值;f(·)为传递函数;yj为第j个神经元的输出[1]。

第j个神经元的净输入值为:BP神经元其中:若视,,即令及包括及,则于是节点j的净输入可表示为:净输入通过传递函数(Transfer Function)f (·)后,便得到第j个神经元的输出:式中f(·)是单调上升函数,而且必须是有界函数,因为细胞传递的信号不可能无限增加,必有一最大值。

BP神经网络实验报告

BP神经网络实验报告

BP神经网络实验报告一、引言BP神经网络是一种常见的人工神经网络模型,其基本原理是通过将输入数据通过多层神经元进行加权计算并经过非线性激活函数的作用,输出结果达到预测或分类的目标。

本实验旨在探究BP神经网络的基本原理和应用,以及对其进行实验验证。

二、实验方法1.数据集准备本次实验选取了一个包含1000个样本的分类数据集,每个样本有12个特征。

将数据集进行标准化处理,以提高神经网络的收敛速度和精度。

2.神经网络的搭建3.参数的初始化对神经网络的权重和偏置进行初始化,常用的初始化方法有随机初始化和Xavier初始化。

本实验采用Xavier初始化方法。

4.前向传播将标准化后的数据输入到神经网络中,在神经网络的每一层进行加权计算和激活函数的作用,传递给下一层进行计算。

5.反向传播根据预测结果与实际结果的差异,通过计算损失函数对神经网络的权重和偏置进行调整。

使用梯度下降算法对参数进行优化,减小损失函数的值。

6.模型评估与验证将训练好的模型应用于测试集,计算准确率、精确率、召回率和F1-score等指标进行模型评估。

三、实验结果与分析将数据集按照7:3的比例划分为训练集和测试集,分别进行模型训练和验证。

经过10次训练迭代后,模型在测试集上的准确率稳定在90%以上,证明了BP神经网络在本实验中的有效性和鲁棒性。

通过调整隐藏层结点个数和迭代次数进行模型性能优化实验,可以发现隐藏层结点个数对模型性能的影响较大。

随着隐藏层结点个数的增加,模型在训练集上的拟合效果逐渐提升,但过多的结点数会导致模型的复杂度过高,容易出现过拟合现象。

因此,选择合适的隐藏层结点个数是模型性能优化的关键。

此外,迭代次数对模型性能也有影响。

随着迭代次数的增加,模型在训练集上的拟合效果逐渐提高,但过多的迭代次数也会导致模型过度拟合。

因此,需要选择合适的迭代次数,使模型在训练集上有好的拟合效果的同时,避免过度拟合。

四、实验总结本实验通过搭建BP神经网络模型,对分类数据集进行预测和分类。

实训神经网络实验报告

实训神经网络实验报告

一、实验背景随着人工智能技术的飞速发展,神经网络作为一种强大的机器学习模型,在各个领域得到了广泛应用。

为了更好地理解神经网络的原理和应用,我们进行了一系列的实训实验。

本报告将详细记录实验过程、结果和分析。

二、实验目的1. 理解神经网络的原理和结构。

2. 掌握神经网络的训练和测试方法。

3. 分析不同神经网络模型在特定任务上的性能差异。

三、实验内容1. 实验一:BP神经网络(1)实验目的:掌握BP神经网络的原理和实现方法,并在手写数字识别任务上应用。

(2)实验内容:- 使用Python编程实现BP神经网络。

- 使用MNIST数据集进行手写数字识别。

- 分析不同学习率、隐层神经元个数对网络性能的影响。

(3)实验结果:- 在MNIST数据集上,网络在训练集上的准确率达到98%以上。

- 通过调整学习率和隐层神经元个数,可以进一步提高网络性能。

2. 实验二:卷积神经网络(CNN)(1)实验目的:掌握CNN的原理和实现方法,并在图像分类任务上应用。

(2)实验内容:- 使用Python编程实现CNN。

- 使用CIFAR-10数据集进行图像分类。

- 分析不同卷积核大小、池化层大小对网络性能的影响。

(3)实验结果:- 在CIFAR-10数据集上,网络在训练集上的准确率达到80%以上。

- 通过调整卷积核大小和池化层大小,可以进一步提高网络性能。

3. 实验三:循环神经网络(RNN)(1)实验目的:掌握RNN的原理和实现方法,并在时间序列预测任务上应用。

(2)实验内容:- 使用Python编程实现RNN。

- 使用Stock数据集进行时间序列预测。

- 分析不同隐层神经元个数、学习率对网络性能的影响。

(3)实验结果:- 在Stock数据集上,网络在训练集上的预测准确率达到80%以上。

- 通过调整隐层神经元个数和学习率,可以进一步提高网络性能。

四、实验分析1. BP神经网络:BP神经网络是一种前向传播和反向传播相结合的神经网络,适用于回归和分类问题。

BP神经网络实验报告

BP神经网络实验报告

BP神经网络实验报告BP神经网络实验报告一、实验目的本实验的目的是熟悉MATLAB中神经网络工具箱的使用方法,同时通过编程实现BP网络逼近标准正弦函数,来加深对BP网络的了解和认识,理解信号的正向传播和误差的反向传递过程。

二、实验原理传统的感知器和线性神经网络无法解决线性不可分问题,因此在实际应用过程中受到了限制。

而BP网络却拥有良好的繁泛化能力、容错能力以及非线性映射能力,因此成为应用最为广泛的一种神经网络。

BP算法将研究过程分为两个阶段:第一阶段是信号的正向传播过程,输入信息通过输入层、隐层逐层处理并计算每个单元的实际输出值;第二阶段是误差的反向传递过程,若在输入层未能得到期望的输出值,则逐层递归的计算实际输出和期望输出的差值(即误差),以便根据此差值调节权值。

这种过程不断迭代,最后使得信号误差达到允许或规定的范围之内。

基于BP算法的多层前馈型网络模型的拓扑结构如下图所示:BP算法的数学描述:三层BP前馈网络的数学模型如下图所示。

三层前馈网中,输入向量为X=(x1,x2.xi。

xn)T;隐层输入向量为Y=(y1,y2.___。

y_m)T;输出层输出向量为O=(o1,o2.ok。

ol)T;期望输出向量为d=(d1,d2.dk。

dl)T。

输入层到隐层之间的权值矩阵用V表示,V=(v1,v2.其中列向量vj 为隐层第j个神经元对应的权向量;v_j。

v_m)Y,隐层到输出层之间的权值矩阵用W表示,W=(w1,w2.wk。

wl),其中列向量wk为输出层第k个神经元对应的权向量。

下面分析各层信号之间的数学关系。

对于输出层,有:yj=f(netj)。

j=1,2.mnetj=∑vijxi。

j=1,2.m对于隐层,有:Ok=f(netk)。

k=1,2.l___∑wjk*yi。

k=1,2.lj=1其中转移函数f(x)均为单极性Sigmoid函数:f(x)=1/(1+e^-x),具有连续、可导的特点,且f'(x)=f(x)[1-f(x)]。

实验报告 BP神经网络(2150230509)资料

实验报告 BP神经网络(2150230509)资料

深圳大学实验报告实验课程名称:神经网络与进化算法实验项目名称:BP神经网络对蝴蝶花进行分类学院:计算机与软件专业:软件工程报告人:文成学号:2150230509 同组人:无指导教师:朱安民实验时间:2016年4月1日至2016年4月7日实验报告提交时间:2016年4月7日教务处制初步熟悉BP神经网络,并设计一个BP神经网络对蝴蝶花进行分类二、实验内容设计一个BP神经网络对蝴蝶花进行分类,要求提交试验报告,内容包括:1.问题说明描。

2.数据述。

3.网络设计,包括输入层、隐含层、输出层节点个数的设计。

4.算法步骤。

5.编程,注意原始数据的通用化,数据输入的随机性。

6.网络训练,注意训练数据与验证数据分开。

7.网络验证7.结果分析,修改隐含层节点个数,修改学习率,分别对结果的影响。

8.体会,例如对下列问题的理解:1)BP学习算法的基本思想?2)BP网络设计中结点个数如何确定?3)为什么要对数据进行通用标准化,即转为[-1,1]?4)为什么要对训练数据的输入顺序进行随机化处理?5)为什么训练数据与测试数据要分开?注意:如果用MatLab编程序,将下列数据存放到一个文本文件(例如data.dat),编写程序存放到一个m文件中(例如你的学号.m),数据文件和程序文件放在同一文件夹下。

运行MatLab后,指定上述文件夹为工作区域,在命令行运行m文件。

前期工作:首先将实验数据分为两组,一组用于训练,一组用于测试。

分别保存在trainData.txt和testData.txt中(115组训练数据和35组测试数据)。

如图所示:各列数据代表的意义如下:序号种类叶长叶宽花长花宽(单位:cm)1 1 49 30 14 22 2 66 29 46 13…150 3 65 33 60 25(本实验设计一个BP网络,先用75%的数据对网络进行训练,然后用25%的数据进行检测。

)网络设计:输入层用4个节点,分别对应文件中的3/4/5/6列,隐层用3个节点。

昆明理工大学智能控制(BP神经网络)实验

昆明理工大学智能控制(BP神经网络)实验

昆明理工大学信息工程与自动化学院学生实验报告( 2014—2015学年 第二学期 )课程名称:智能控制导论 开课实验室:信自楼442机房 2015年5月30日通过上机实习,熟悉MATLAB 的基本操作命令和神经网络工具箱的使用,掌握MATLAB 编程或神经网络编辑器等方法,进行BP 神经网络设计的基本方法和步骤,为以后利用计算机进行神经网络控制系统分析与设计打下良好的基础。

二、实验内容试设计BP 神经网络来实现正弦函数的逼近。

输入矢量 X= -2: 0.05: 2; 相对应的目标矢量)cos()2sin(X X Y ⋅+⋅=ππ三、实验要求1. 设计一个BP 神经网络来实现对正弦函数关系的逼近; 2. 正确的选择确定BP 神经网络的相关参数; 3. 完成BP 网络函数逼近程序的仿真与调试; 4. 仿真结果分析。

四、实验原理BP 网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。

一个典型的三层BP 网络的拓扑结构,层与层之间采用全互连方式,同一层之间不存在相互连接,隐层可以有一层或多层。

层与层之间有两种信号在流通:一种是工作信号,它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。

另一种是误差信号,网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。

BP网络的学习过程程由前向计算过程和误差反向传播过程组成。

在前向计算过程中,输入量从输入层经隐层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。

如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复向计算。

这两个过程一次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。

五、实验过程利用两层BP网络完成函数逼近,隐含层激活函数为S型函数,输出层的激活函数为线性函数。

程序为:clear all;clc;NNTWARN OFF;X=-2:0.05:2;T=sin(2*pi*X)+cos(pi*X);plot(X,T,'+b');pause得到原始曲线截图:建立BP网络,并初始化权值和阈值程序为:[R,N]=size(X);[S2,N]=size(T);S1=20; %隐含层神经元个数[w11,b11,w12,b12]=initff(X,S1,'tansig',S2,'purelin');[y1,y21]=simuff(X,w11,b11,'tansig',w12,b12,'purelin');得到训练前BP网络的函数逼近效果截图:利用不含噪声的理想输入数据训练网络程序为:disp_freq=5;max_epoch=10000; % 训练次数err_goal=0.05; % 训练误差lr=0.01; %学习速率tp=[disp_freq max_epoch err_goal lr];[w21,b21,w22,b22,te,tr]=trainbpx(w11,b11,'tansig',w12,b12,'purelin',X,T,t p);BP网络训练过程参数显示截图为显示训练后网络的函数逼近效果程序为[y1,y22]=simuff(X,w21,b21,'tansig',w22,b22,'purelin'); plot(X,y21,'--g',X,y22,'or')disp('网络训练步数为:')tepause训练后BP网络的函数逼近效果截图为达到要求所用的网络训练步数截图:由于我预设的训练误差为0.05,相对来说比较大,而且预设10000步达到训练目的,但只用了1348步就已经完成了,所以我做了大胆的设想,将训练误差改为0.01,以期望能达到更高的要求。

BP神经网络算法实验报告

BP神经网络算法实验报告

计算各层的输入和输出
es
计算输出层误差 E(q)
E(q)<ε
修正权值和阈值


图 2-2 BP 算法程序流程图
3、实验结果
任课教师: 何勇强
日期: 2010 年 12 月 24 日
中国地质大学(北京) 课程名称:数据仓库与数据挖掘 班号:131081 学号:13108117 姓名:韩垚 成绩:
任课教师: 何勇强
(2-7)
wki
输出层阈值调整公式:
(2-8)
ak
任课教师: 何勇强
E E netk E ok netk ak netk ak ok netk ak
(2-9)
日期: 2010 年 12 月 24 日
中国地质大学(北京) 课程名称:数据仓库与数据挖掘 隐含层权值调整公式: 班号:131081 学号:13108117 姓名:韩垚 成绩:
Ep
系统对 P 个训练样本的总误差准则函数为:
1 L (Tk ok ) 2 2 k 1
(2-5)
E
1 P L (Tkp okp )2 2 p 1 k 1
(2-6)
根据误差梯度下降法依次修正输出层权值的修正量 Δwki,输出层阈值的修正量 Δak,隐含层权 值的修正量 Δwij,隐含层阈值的修正量
日期: 2010 年 12 月 24 日
隐含层第 i 个节点的输出 yi:
M
yi (neti ) ( wij x j i )
j 1
(2-2)
输出层第 k 个节点的输入 netk:
q q M j 1
netk wki yi ak wki ( wij x j i ) ak

bP神经网络控制

bP神经网络控制
doubletheta_output[numOutputLayer]; //输出结点阀值
doublew_hide_input[numHiddenLayer][numInputLayer]; //隐含结点权值
doublew_output_hide[numOutputLayer][numHiddenLayer]; //输出结点权值
}
//输入层与隐层之间的权值
for(i=0;i<numHiddenLayer;i++)
{
for(intj=0;j<numInputLayer;j++)
{
w_hide_input[i][j]=(2.0*(double)rand()/RAND_MAX)-1;
}
}
//输出层与隐层之间的权值
for(i=0;i<numOutputLayer;i++)
Y[i][0]=sin(X[i][0]);
X[iபைடு நூலகம்[0]=preminmax2(0,2*pi,X[i][0]);//输入[0,2π]归一化到[-1,1]
Y[i][0]=preminmax(-1,1,Y[i][0]);//输出[-1,1]归一化到[0,1]
return 0;
}
void initial()
智能控制实验报告
-BP神经网络
一.实验内容
设计BP网络,映射函数为:
1.y=sin(x) x (0,2 )
2.y=x1^2+x2^2+x1*x2 x1,x2 (0,1)
给出训练后的权值矩阵,并考察训练拟合的效果。
二.实验原理
1.BP网络原理
BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每个样本包括输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wij和隐层节点与输出节点之间的联接强度Tjk以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。

神经网络实验报告

神经网络实验报告

实验报告课程名称BP神经网络实验实验名称一级倒立摆实验实验仪器matlab、一级倒立摆实验台系别自动化专业班级/学号学生姓名实验日期2014年4月8日成绩指导老师一级倒立摆实验实验目的:(1)熟悉Matlab/Simulink的使用.(2)掌握BP神经网络的基本原理和基本的设计步骤.(3)了解BP神经网络在实际中的应用.(4)针对简单的实际系统, 能够建立BP神经网络控制模型. 实验原理:1.前馈型人工神经网络前馈型人工神经网络是整个神经网络体系中最常见的一种,其结构模型如图2所示。

网络结构包含输入层、隐层(可能是多层)和输出层,它的连接方式是同层之间不相连接,相邻层之间单元为全连接型。

这种网络没有反馈存在,实际运行是单向的,学习方式是一种监督式学习。

前馈型神经网络具有很强的非线性映射能力,寻找其映射是靠学习实践的,只要学习数据足够完备,就能够描述任意未知的复杂系统。

因此前馈神经网络为非线性系统的建模和控制提供了有力的工具。

图1 前馈型神经网络结构2.BP算法原理BP(Back Propagation)神经网络是一种利用误差反向传播训练算法的前馈型网络,BP学习算法实质是求取网络总误差函数的最小值问题[2]。

这种算法采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数,它是梯度下降法在多层前馈网络中的应用。

具体学习算法包括两大过程,其一是输入信号的正向传播过程,其二是输出误差信号的反向传播过程。

1.正向传播输入的样本从输入层经过隐层单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。

在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。

网络各层的权值改变量,则由传播到该层的误差大小来决定。

BP神经网络实验

BP神经网络实验

实验名称:班级名称: 专业:姓名:学号:联系电话:计算智能实验报告BP神经网络算法实验一、实验目的1)编程实现BP神经网络算法;2)探究BP算法中学习因子算法收敛趋势、收敛速度之间的关系;3)修改训练后BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果,理解神经网络分布存储等特点。

二、实验要求按照下面的要求操作,然后分析不同操作后网络输出结果。

1)可修改学习因子2)可任意指定隐单元层数3)可任意指定输入层、隐含层、输出层的单元数4)可指定最大允许误差e5)可输入学习样本(增加样本)6)可存储训练后的网络各神经元之间的连接权值矩阵;7)修改训练后的BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果。

三、实验原理1明确BP神经网络算法的基本思想如下:2明确BP神经网络算法步骤和流程如下:四、实验内容和分析1.. 实验时建立三层BP神经网络,输入节点2个,隐含层节点2个,输出节点1个,输入训练样本如下表:学习因子分别为0.5和0.6,最大允许误差0.012.训练结果:训练次数3906 ,全局误差0.0099955输入层与隐含层连接权值为-5.25626 5.04393-5.35186 5.43925隐含层与输出层连接权值为7.79517 -7.43036隐含层神经元阈值为-2.77105 2.78374输出层神经元阈值为3.480783.输入测试样本为0.05 0.10.2 0.90.86 0.95输出测试结果为0.046 0.7860.043可见网络性能良好,输出结果基本满足识别要求。

4.改变学习因子学习因子决定每一次循环训练中所产生的权值变化量。

大的学习因子可能导致系统的不稳定;但小的学习因子导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于误差最小值。

所以一般情况下倾向于选取较小的学习速率以保证系统的稳定性。

5.改变输入层、隐含层、输出层的单元数当隐含层节点个数为3时,相同训练样本和测试样本,得到测试结果为0.0450.7990.039训练次数3742 ,全局误差0.0099959可见,改变输入层、隐含层、输出层的单元数,即改变网络结构,可以改善网络性能,增加隐含层节点个数可以更好的提取模式特征,识别结果更精确,但网络复杂度增加,可能不稳定。

神经网络基于BP网络的多层感知器实验报告

神经网络基于BP网络的多层感知器实验报告

精心整理神经网络及应用实验报告实验二、基于BP网络的多层感知器一:实验目的:1.理解多层感知器的工作原理2.通过调节算法参数了解参数的变化对于感知器训练的影响3.BP1.基本2.BPη∈BP<1.用Matlab编程,实现解决该问题的单样本训练BP网络,设置一个停止迭代的误差E min和最大迭代次数。

在调试过程中,通过不断调整隐层节点数,学习率η,找到收敛速度快且误差小的一组参数。

产生均匀分布在区间[-4,4]的测试样本,输入建立的模型得到输出,与Hermit多项式的期望输出进行比较计算总误差(运行5次,取平均值),并记录下每次迭代结束时的迭代次数。

(要求误差计算使用RME,Emin设置为0.1)程序如下:functiondyb%单样本程序clc;closeall;clear;x0=[1:101;-4:0.08:4];%样本101个x0(1,:)=-1;x=x0';yuzhi=0.1;%阈值j=input('请输入隐层节点数j=');%隐层节点数end;p=1;q=1;azc=0;acs=0;Erme=0;forp=1:101y=zeros(1,j);fori=1:jnetj(1,i)=x(p,:)*v(:,i);y(1,i)=1/(1+exp(-netj(1,i)));end;y=[-1y];o(p)=w*y'+zhaosheng(p);%噪声wucha=d(p)-o(p);err(1,p)=1/2*wucha^2;erro=[erro,wucha];form=1:j+1w(1,m)=w(1,m)+n*wucha*y(1,m);end;form=1:jv(:,m)=v(:,m)+n*wucha*w(1,m)*y(1,m)*(1-y(1,m))*x(p,:)'; endq=q+1;end;fort=1:101;Erme=Erme+err(1,t);end;end;end;enddisp('holdon;disp('endend训练样本与测试样本2.实现解决该问题的批处理训练BP网络,调整参数如上。

BP神经网络 报告

BP神经网络 报告

作业二、BP神经网络的拟合能力一、实验目的学会使用BP神经网络拟合各种函数曲线,学会分析隐层神经元个数、步长训练精度的影响。

二、实验要求设x=0:0.01:3y=3*sin(x)+2*cos(x.^2)+0.3*rand(1,length(x))针对前述函数,建立一个单输入单输出的3层BP网络,并撰写报告,激励函数等可自行选择:要求:神经网络输出与函数输出的误差应小于某小值;报告内容包括:1.输入输出样本集的选取(x取值范围应该覆盖0度到360度,样本数目应该大于50)2.网络隐层节点数目、激励函数形式、所用学习算法;(若有不同选择,说明选择的过程与理由)3.学习步长、学习结束控制参数等参数设置4.学习过程中误差的变化曲线图5.学习前(选择初始权值时)神经网络的输出曲线与实际函数的曲线对比图6.学习后神经网络的输出曲线与实际函数的曲线对比图7.学习次数8.结论9.提供MATLAB源程序三、问题的提出由于所给函数x取值范围是[0 3],而题目要求输入输出样本集x取值范围应该覆盖0度到360度。

所以x在[3 2*pi]内,应观察已训练好的神经网络是否满足目标函数,以此检验训练完的网络。

四、建立网络与参数设置4.1 首先分析几个常用的激励函数(1)logsig对数S型(sigmoid)传递函数,它可以将神经元的输入范围是(-∞,+∞)映射到(0,1)的区间上,它是可微函数,其表达式为:y=1/1+e-x。

(2)tansig双曲正切S型(sigmoid)传递函数,它可以将神经元的输入范围(-∞,+∞)映射到(-1,+1)的区间上,它是可微函数。

对logsig传递函数而言,输出范围是(0,1),对tansig传递函数而言,输出范围是(-1,1)。

如果是purelin型神经元,则整个网络的输出可以是任意值。

对三层BP网络而言,如果最后一层是sigmoid型神经元,那么整个网络的输出就限制在一个较小的范围内。

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

江南大学物联网工程学院实验报告课程名称人工智能实验名称BP神经网络实验日期2016-04-30班级计科1305 姓名游思睿学号1030413529实验报告要求1.实验名称2.实验要求3.实验环境4.实验步骤5.实验体会一、实验目的:两个输入a、b(10以内的数),一个输出c,c=a+b。

换句话说就是教BP神经网络加法运算。

二、实验内容:Data 用来表示已经知道的数据样本的数量,也就是训练样本的数量。

In 表示对于每个样本有多少个输入变量; Out 表示对于每个样本有多少个输出变量。

Neuron 表示神经元的数量,TrainC 来表示训练的次数。

再来我们看对神经网络描述的数据定义,来看下面这张图里面的数据类型都是double 型。

d_in[Data][In] 存储Data 个样本,每个样本的In 个输入。

d_out[Data][Out] 存储Data 个样本,每个样本的Out 个输出。

我们用邻接表法来表示图 1 中的网络,w[Neuron][In] 表示某个输入对某个神经元的权重,v[Out][Neuron] 来表示某个神经元对某个输出的权重;与之对应的保存它们两个修正量的数组dw[Neuron][In] 和dv[Out][Neuron]。

数组o[Neuron] 记录的是神经元通过激活函数对外的输出,OutputData[Out] 存储BP神经网络的输出。

初始化主要是涉及两个方面的功能,一方面是对读取的训练样本数据进行归一化处理,归一化处理就是指的就是将数据转换成0~1之间。

在BP神经网络理论里面,并没有对这个进行要求,不过实际实践过程中,归一化处理是不可或缺的。

因为理论模型没考虑到,BP神经网络收敛的速率问题,一般来说神经元的输出对于0~1之间的数据非常敏感,归一化能够显著提高训练效率。

可以用以下公式来对其进行归一化,其中加个常数A 是为了防止出现0 的情况(0不能为分母)。

y=(x-MinValue+A)/(MaxValue-MinValue+A)另一方面,就是对神经元的权重进行初始化了,数据归一到了(0~1)之间,那么权重初始化为(-1~1)之间的数据,另外对修正量赋值为0函数backUpdate(i) 负责的是将预测输出的结果与样本真实的结果进行比对,然后对神经网络中涉及到的权重进行修正,也这是BP神经网络实现的关键所在。

如何求到对于w[Neuron][In] 和v[Out][Neuron] 进行修正的误差量便是关键所在!误差修正量的求法在基本模型一文中数学分析部分有解答,具体问题具体分析,落实到我们设计的这个BP神经网络上来说,需要得到的是对w[Neuron][In] 和v[Out][Neuron] 两个数据进行修正误差,误差量用数据结构dw[Neuron][In] 和 dv[Out][Neuron] 来进行存储。

那么来分析下这两个修正误差量是什么样的?推导的思路与基本模型中推导误差量的一致,这里仅列出对具体对于我们设计的BP神经网络中的数学推导过程:三、实验环境VS2010四、实验步骤(对照截图具体说明,尽量详细)#include <stdio.h>#include <time.h>#include <math.h>#include <stdlib.h>#define Data 820#define In 2#define Out 1#define Neuron 45#define TrainC 20000#define A 0.2#define B 0.4#define a 0.2#define b 0.3double d_in[Data][In],d_out[Data][Out];double w[Neuron][In],o[Neuron],v[Out][Neuron]; double Maxin[In],Minin[In],Maxout[Out],Minout[Out]; double OutputData[Out];double dv[Out][Neuron],dw[Neuron][In];double e;void writeTest(){FILE *fp1,*fp2;double r1,r2;int i;srand((unsigned)time(NULL));if((fp1=fopen("D:\\in.txt","w"))==NULL){printf("can not open the in file\n");exit(0);}if((fp2=fopen("D:\\out.txt","w"))==NULL){printf("can not open the out file\n");exit(0);}for(i=0;i<Data;i++){r1=rand()%1000/100.0;r2=rand()%1000/100.0;fprintf(fp1,"%lf %lf\n",r1,r2);fprintf(fp2,"%lf \n",r1+r2);}fclose(fp1);fclose(fp2);}void readData(){FILE *fp1,*fp2;int i,j;if((fp1=fopen("D:\\in.txt","r"))==NULL){printf("can not open the in file\n");exit(0);}for(i=0;i<Data;i++)for(j=0; j<In; j++)fscanf(fp1,"%lf",&d_in[i][j]);fclose(fp1);if((fp2=fopen("D:\\out.txt","r"))==NULL){printf("can not open the out file\n");exit(0);}for(i=0;i<Data;i++)for(j=0; j<Out; j++)fscanf(fp1,"%lf",&d_out[i][j]);fclose(fp2);}void initBPNework(){int i,j;for(i=0; i<In; i++){Minin[i]=Maxin[i]=d_in[0][i];for(j=0; j<Data; j++){Maxin[i]=Maxin[i]>d_in[j][i]?Maxin[i]:d_in[j][i];Minin[i]=Minin[i]<d_in[j][i]?Minin[i]:d_in[j][i];}}for(i=0; i<Out; i++){Minout[i]=Maxout[i]=d_out[0][i];for(j=0; j<Data; j++){Maxout[i]=Maxout[i]>d_out[j][i]?Maxout[i]:d_out[j][i];Minout[i]=Minout[i]<d_out[j][i]?Minout[i]:d_out[j][i];}}for (i = 0; i < In; i++)d_in[j][i]=(d_in[j][i]-Minin[i]+1)/(Maxin[i]-Minin[i]+1);for (i = 0; i < Out; i++)for(j = 0; j < Data; j++)d_out[j][i]=(d_out[j][i]-Minout[i]+1)/(Maxout[i]-Minout[i]+1);for (i = 0; i < Neuron; ++i)for (j = 0; j < In; ++j){w[i][j]=rand()*2.0/RAND_MAX-1;dw[i][j]=0;}for (i = 0; i < Neuron; ++i)for (j = 0; j < Out; ++j){v[j][i]=rand()*2.0/RAND_MAX-1;dv[j][i]=0;}}void computO(int var){int i,j;double sum,y;for (i = 0; i < Neuron; ++i){sum=0;for (j = 0; j < In; ++j)sum+=w[i][j]*d_in[var][j];o[i]=1/(1+exp(-1*sum));}for (i = 0; i < Out; ++i){sum=0;for (j = 0; j < Neuron; ++j)sum+=v[i][j]*o[j];OutputData[i]=sum;}}void backUpdate(int var){int i,j;double t;{t=0;for (j = 0; j < Out; ++j){t+=(OutputData[j]-d_out[var][j])*v[j][i];dv[j][i]=A*dv[j][i]+B*(OutputData[j]-d_out[var][j])*o[i];v[j][i]-=dv[j][i];}for (j = 0; j < In; ++j){dw[i][j]=a*dw[i][j]+b*t*o[i]*(1-o[i])*d_in[var][j];w[i][j]-=dw[i][j];}}}double result(double var1,double var2){int i,j;double sum,y;var1=(var1-Minin[0]+1)/(Maxin[0]-Minin[0]+1);var2=(var2-Minin[1]+1)/(Maxin[1]-Minin[1]+1);for (i = 0; i < Neuron; ++i){sum=0;sum=w[i][0]*var1+w[i][1]*var2;o[i]=1/(1+exp(-1*sum));}sum=0;for (j = 0; j < Neuron; ++j)sum+=v[0][j]*o[j];return sum*(Maxout[0]-Minout[0]+1)+Minout[0]-1;}void writeNeuron(){FILE *fp1;int i,j;if((fp1=fopen("D:\\neuron.txt","w"))==NULL){printf("can not open the neuron file\n");exit(0);}for (i = 0; i < Neuron; ++i)for (j = 0; j < In; ++j){fprintf(fp1,"%lf ",w[i][j]);}fprintf(fp1,"\n\n\n\n");for (i = 0; i < Neuron; ++i)for (j = 0; j < Out; ++j){fprintf(fp1,"%lf ",v[j][i]);}fclose(fp1);}void trainNetwork(){int i,c=0,j;do{e=0;for (i = 0; i < Data; ++i){computO(i);for (j = 0; j < Out; ++j)e+=fabs((OutputData[j]-d_out[i][j])/d_out[i][j]);backUpdate(i);}printf("%d %lf\n",c,e/Data);c++;}while(c<TrainC && e/Data>0.01);}int main(int argc, char const *argv[]){writeTest();readData();initBPNework();trainNetwork();printf("%lf \n",result(6,8) );printf("%lf \n",result(2.1,7) );printf("%lf \n",result(4.3,8) );writeNeuron();return 0;}五、实验体会教师评价优良中及格不及格教师签名日期。

相关文档
最新文档