程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

【图像识别】基于BP神经网络实现手写字母识别matlab源码

发布于2021-05-30 18:51     阅读(1070)     评论(0)     点赞(20)     收藏(0)


一、简介

基于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神经网络性能的影响:

隐含层神经元节点个数

激活函数类型的选择

学习率

初始权值与阈值

交叉验证

训练集

测试集

验证集

留一法

二、源代码

  1. %Example1 手写体大写字母识别
  2. %形成用户界面
  3. clear all;
  4. %添加图形窗口
  5. H=figure('Color',[0.8 0.8 1],...
  6. 'position',[400 300 500 400],...
  7. 'Name','基于BP神经网络的手写体大写字母识别',...
  8. 'NumberTitle','off',...
  9. 'MenuBar','none');
  10. %画坐标轴对象,显示原始图像
  11. h0=axes('position',[0.1 0.6 0.3 0.3]);
  12. %添加图像打开按钮
  13. h1=uicontrol(H,'Style','push',...
  14. 'Position',[350 300 80 60],...
  15. 'String','选择图像',...
  16. 'FontSize',14,...
  17. 'Call','op');
  18. %画坐标轴对象,显示经过预处理之后的图像
  19. %preprocess
  20. p1=ones(16,16);
  21. bw=im2bw(X,0.5);%转换成二值图像
  22. %用矩形框截取图像
  23. [i,j]=find(bw==0);
  24. imin=min(i);
  25. imax=max(i);
  26. jmin=min(j);
  27. jmax=max(j);
  28. bw1=bw(imin:imax,jmin:jmax);

三、运行结果

在这里插入图片描述

四、备注

完整代码或仿真咨询QQ1575304183

 

原文链接:https://blog.csdn.net/weixin_50197058/article/details/117386183



所属网站分类: 技术文章 > 博客

作者:bbjbbh

链接:http://www.phpheidong.com/blog/article/86767/9cbcb85368d8114b58f0/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)