一、简介
基于matlab GUI界面BP网络之手写体大写字母识别
人工神经网络概述:

人工神经元模型:

神经网络的分类:
按照连接方式,可以分为:前向神经网络 vs. 反馈(递归)神经网络;
按照学习方式,可以分为:有导师学习神经网络 vs. 无导师学习神经网络;
按照实现功能,可以分为:拟合(回归)神经网络 vs. 分类神经网络。



数据归一化:将数据映射到[0, 1]或[-1, 1]区间或其他的区间。
数据归一化的原因:
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。
归一化算法:
1.y = ( x - min )/( max - min );
2.y = 2 * ( x - min ) / ( max - min ) - 1。
部分函数:

参数对BP神经网络性能的影响:
隐含层神经元节点个数
激活函数类型的选择
学习率
初始权值与阈值
交叉验证
训练集
测试集
验证集
留一法
二、源代码
%Example1 手写体大写字母识别
%形成用户界面
clear all;
%添加图形窗口
H=figure('Color',[0.8 0.8 1],...
'position',[400 300 500 400],...
'Name','基于BP神经网络的手写体大写字母识别',...
'NumberTitle','off',...
'MenuBar','none');
%画坐标轴对象,显示原始图像
h0=axes('position',[0.1 0.6 0.3 0.3]);
%添加图像打开按钮
h1=uicontrol(H,'Style','push',...
'Position',[350 300 80 60],...
'String','选择图像',...
'FontSize',14,...
'Call','op');
%画坐标轴对象,显示经过预处理之后的图像
%preprocess
p1=ones(16,16);
bw=im2bw(X,0.5);%转换成二值图像
%用矩形框截取图像
[i,j]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imax,jmin:jmax);
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
三、运行结果
1248

被折叠的 条评论
为什么被折叠?



