深圳大学实验报告实验课程名称: 神经网络与进化算法 实验项目名称: BP神经网络对蝴蝶花进行分类 学院: 计算机与软件 专业: 软件工程 报告人: 文 成 学号: 2150230509 同组人: 无 指导教师: 朱安民 实验时间: 2016年4月1日 至 2016年4月7日 实验报告提交时间: 2016年4月7日 教务处制一、实验目的初步熟悉BP神经网络,并设计一个BP神经网络对蝴蝶花进行分类二、实验内容设计一个BP神经网络对蝴蝶花进行分类,要求提交试验报告,内容包括:。。,包括输入层、隐含层、输出层节点个数的设计。。,注意原始数据的通用化,数据输入的随机性。,注意训练数据与验证数据分开。,修改隐含层节点个数,修改学习率,分别对结果的影响。,例如对下列问题的理解:1)BP学习算法的基本思想?2)BP网络设计中结点个数如何确定?3)为什么要对数据进行通用标准化,即转为[-1,1]?4)为什么要对训练数据的输入顺序进行随机化处理?5)为什么训练数据与测试数据要分开?注意:如果用MatLab编程序,将下列数据存放到一个文本文件(),编写程序存放到一个m文件中(),数据文件和程序文件放在同一文件夹下。运行MatLab后,指定上述文件夹为工作区域,在命令行运行m文件。三、实验步骤前期工作:首先将实验数据分为两组,一组用于训练,一组用于测试。(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个节点。因为输出有3类,我们也用3个节点来表示,分别对应100/010/001。算法描述:BP学习算法类似于LMS算法,它是基于梯度下降:即权值按照错误信号的负梯度方向进行修改。其主要优点在于将高层的错误表现反向传递为低层,从而修改权值。第一步,初始化权值随机赋值,取值范围[-1,+1]第二步,输入层FA输入样品,计算出隐层FB活动第三步,计算出输出层FC活动第四步,网络输出和期望输出相比较,计算出输出层FC的错误第五步,反传,计算出隐层FB的错误第六步,修改FC层和FB之间的权值wij第七步,修改FA层和FB之间的权值vhj第八步,修改偏差i、j重复第二到第八步,直到输出层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 );fori=1:soutput(i,class(i)+1 )=1;end%=newff(minmax(input),[33],{'logsig''logsig'},'traingdx');%.=.=.=0..=;%=,input,output');%读取训练数据[id2ct1t2t3t4]=textread('','%f%f%f%f%f%f');%测试数据归一化testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);%仿真Y=,testInput)%取最大者为1的位置作为识别结果[resultmax,r]=max(Y);testclass=r'-1;%统计识别正确率[s1,s2]=size(Y);hitNum=0;fori=1:s2[m,Index]=max(Y(:, i));if(Index ==c(i)+
实验报告+bp神经网络(2150230509) 来自淘豆网m.daumloan.com转载请标明出处.