下载此文档

实验报告 BP神经网络(2150230509).doc


文档分类:高等教育 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
深圳大学实验报告
实验课程名称: 神经网络与进化算法
实验项目名称: BP神经网络对蝴蝶花进行分类

学院: 计算机与软件专业: 软件工程

报告人: 文成学号: 2150230509

同组人: 无

指导教师: 朱安民
实验时间: 2016年4月1日至 2016年4月7日
实验报告提交时间: 2016年4月7日
教务处制
实验目的
初步熟悉BP神经网络,并设计一个BP神经网络对蝴蝶花进行分类
实验内容
设计一个BP神经网络对蝴蝶花进行分类,要求提交试验报告,内容包括:
问题说明描。
数据述。
网络设计,包括输入层、隐含层、输出层节点个数的设计。
算法步骤。
编程,注意原始数据的通用化,数据输入的随机性。
网络训练,注意训练数据与验证数据分开。
网络验证
结果分析,修改隐含层节点个数,修改学习率,分别对结果的影响。
体会,例如对下列问题的理解:
BP学习算法的基本思想?
BP网络设计中结点个数如何确定?
为什么要对数据进行通用标准化,即转为[-1,1]?
为什么要对训练数据的输入顺序进行随机化处理?
为什么训练数据与测试数据要分开?
注意:如果用MatLab编程序,将下列数据存放到一个文本文件(),编写程序存放到一个m文件中(),数据文件和程序文件放在同一文件夹下。运行MatLab后,指定上述文件夹为工作区域,在命令行运行m文件。
实验步骤
前期工作:
首先将实验数据分为两组,一组用于训练,一组用于测试。(115组训练数据和35组测试数据)。如图所示:

各列数据代表的意义如下:
序号 种类 叶长 叶宽 花长 花宽(单位:cm)
1 1 49 30 14 2
2 2 66 29 46 13

150 3 65 33 60 25
(本实验设计一个BP网络,先用75%的数据对网络进行训练,然后用25%的数据进行检测。)
网络设计:
输入层用4个节点,分别对应文件中的3/4/5/6列,隐层用3个节点。因为输出有3类,我们也用3个节点来表示,分别对应100/010/001。
算法描述:
BP学习算法类似于LMS算法,它是基于梯度下降:即权值按照错误信号的负梯度方向进行修改。其主要优点在于将高层的错误表现反向传递为低层,从而修改权值。
第一步,初始化权值随机赋值,取值范围[-1, +1]
第二步,输入层FA输入样品,计算出隐层FB活动
第三步,计算出输出层FC活动
第四步,网络输出和期望输出相比较,计算出输出层FC的错误
第五步,反传,计算出隐层FB的错误
第六步,修改FC层和FB之间的权值wij
第七步,修改FA层和FB之间的权值vhj
第八步,修改偏差ti 、fj
重复第二到第八步,直到输出层FC的错误足够小
MATLAB编程:
使用Matlab建立前馈神经网络主要会使用到下面3个函数:
newff :前馈网络创建函数
train:训练一个神经网络
sim :使用网络进行仿真
MATLAB代码如下,根据隐含层节点个数、学习率、激活函数的选择不同只需要要稍作修改。
%读取训练数据
[id,class,f1,f2,f3,f4,] = textread('' , '%f%f%f%f%f%f');

%特征值归一化
[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;

%构造输出矩阵
s = length( class ) ;
output = zeros( s , 3 ) ;
for i = 1 : s
output( i , class( i )+1 ) = 1 ;
end

%创建神经网络
net = newff( minmax(input) , [3 3] , { 'logsig' 'logsig' } , 'traingdx' ) ;

%设置训练参数
= 50 ;
= 1500 ;
= ;
= ;

%开始训练
net = train( net, input , output' ) ;

%读取训练数据
[id2 c t1 t2 t3 t4 ] = textread('' , '%f%f%f%f%f%f');

实验报告 BP神经网络(2150230509) 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息