一、实验目的

通过学习BP神经网络技术,对手写数字进行识别,基于结构的识别法及模板匹配法来提高识别率。

二、实验器材

PC机     matlab软件

三、实验内容

按照BP神经网络设计方法选用两层BP网络,构造训练样本集,并构成训练所需的输入矢量和目标向量,通过画图工具,获得数字原始图像,截取图像像素为0的最大矩形区域,经过集合变换,变成16*16的二值图像,再进行反色处理,其图像数据特征提取为神经网络的输入向量。通过实验证实,BP神经网络应用于手写数字识别具有较高的识别率和可靠性。

四、实验原理

BP算法由数据流的前向计算(正向传播)和误差信号的反向传播两个过程构成. 正向传播时,传播方向为输入层→隐层→输出层,每层神经元的状态只影响下一层神经元. 若在输出层得不到期望的输出,则转向误差信号的反向传播流程. 通过这两个过程的交替进行,在权向量空间执行误差函数梯度下降策略,动态迭代搜索一组权向量,使网络误差函数达到最小值,从而完成信息提取和记忆过程.

五、实验步骤

1、首先对手写数字图像进行预处理,包括二值化、去噪、倾斜校正、归一化和特征提取,生成BP神经网络的输入向量m和目标向量target. 其中m选取40×10的矩阵,第1列到第10列代表0~9的数字.target为9×10的单位矩阵,每个数字在其所排顺序位置输出1,其他位置输出0.

2、然后神经网络的训练过程是识别字符的基础,直接关系到识别率的高低。输送训练样本至BP神经网络训练, 在梯度方向上反复调整权值使网络平方和误差最小。学习方法采用最速下降方法,输入结点数为16*16=256,隐层传输函数为sigmoid函数(logsig),一个输出结点,输出传输函数为pureline(purelin),隐层结点数为sqrt(256+1)+a(a=1~10),取为25。训练完毕, 把待识别数字送BP神经网络中进行仿真测试。

分析运行结果

六、实验具体过程

构造训练样本集。也构成训练输入样本和目标矢量。通过画图工具,获得数字0~9的图像:(0,10,20,30,40,50 ,60,70,80,90).bmp中存放0的不同写法,(1,11,21,31,41,51 ,61,71,81,91).bmp中存放1的不同写法,… ,以此类推,得到100幅图像。

、代码实现

clear all;
'正在生成输入向量和目标向量,请稍等...'
for kk=0:99p1=ones(16,16);m=strcat(int2str(kk),'.bmp');x=imread(m,'bmp');bw=im2bw(x,0.5);[i,j]=find(bw==0);imin=min(i);imax=max(i);jmin=min(j);jmax=max(j);bwl=bw(imin:imax,jmin:jmax);rate=16/max(size(bwl));bwl=imresize(bwl,rate); [i,j]=size(bwl);
i1=round((16-i)/2);j1=round((16-j)/2);p1(i1+1:i1+i,j1+1:j1+j)=bwl;p1=-1.*p1+ones(16,16);%以图象数据形成神经网络输入向量for m=0:15
p(m*16+1:(m+1)*16,kk+1)=p1(1:16,m+1);end%形成神经网络目标向量switch kkcase{0,10,20,30,40,50,60,70,80,90}t(kk+1)=0;case{1,11,21,31,41,51,61,71,81,91}t(kk+1)=1;case{2,12,22,32,42,52,62,72,82,92}t(kk+1)=2;case{3,13,23,33,43,53,63,73,83,93}t(kk+1)=3;case{4,14,24,34,44,54,64,74,84,94}u            t(kk+1)=4;case{5,15,25,35,45,55,65,75,85,95}t(kk+1)=5;case{6,16,26,36,46,56,66,76,86,96}t(kk+1)=6;case{7,17,27,37,47,57,67,77,87,97}t(kk+1)=7;case{8,18,28,38,48,58,68,78,88,98}t(kk+1)=8;case{9,19,29,39,49,59,69,79,89,99}t(kk+1)=9;end
end
save E52PT p t;
'输入向量和目标向量生成结束!'

实验四:手写数字识别的神经网络算法设计与实现相关推荐

  1. 实验四 手写数字识别的神经网络算法设计与实现

    实验四 手写数字识别的神经网络算法设计与实现 一.实验目的 通过学习BP神经网络技术,对手写数字进行识别,基于结构的识别法及模板匹配法来提高识别率. 二.实验器材 PC机 matlab软件 三.实验内 ...

  2. 模式识别 实验四 手写数字识别的神经网络算法设计与实现

    实验四 手写数字识别的神经网络算法设计与实现 一.实验目的 通过学习BP神经网络技术,对手写数字进行识别,基于结构的识别法及模板匹配法来提高识别率. 二.实验器材 PC机 matlab软件 三.实验内 ...

  3. 【学习日记】手写数字识别及神经网络基本模型

    2021.10.7 [学习日记]手写数字识别及神经网络基本模型 1 概述 张量(tensor)是数字的容器,是矩阵向任意维度的推广,其维度称为轴(axis).深度学习的本质是对张量做各种运算处理,其分 ...

  4. [Kaggle] Digit Recognizer 手写数字识别(神经网络)

    文章目录 1. baseline 2. 改进 2.1 增加训练时间 2.2 更改网络结构 Digit Recognizer 练习地址 相关博文: [Hands On ML] 3. 分类(MNIST手写 ...

  5. Python手写数字识别+GUI界面+手写板设计

    摘要 手写数字识别是模式识别中一个非常重要和活跃的研究领域,数字识别也不是一项孤立的技术,他涉及的问题是模式识别的其他领域都无法回避的:应用上,作为一种信息处理手段,字符识别有广阔的应用背景和巨大的市 ...

  6. 基于python的手写数字识别knn_KNN分类算法实现手写数字识别

    需求: 利用一个手写数字"先验数据"集,使用knn算法来实现对手写数字的自动识别: 先验数据(训练数据)集: ♦数据维度比较大,样本数比较多. ♦ 数据集包括数字0-9的手写体. ...

  7. 卷积神经网络 手写数字识别(包含Pytorch实现代码)

    Hello!欢迎来到六个核桃Lu! 运用卷积神经网络 实现手写数字识别 1 算法分析及设计 卷积神经网络: 图1-2 如图1-2,卷积神经网络由若干个方块盒子构成,盒子从左到右仿佛越来越小,但却越来越 ...

  8. 深度学习笔记:01快速构建一个手写数字识别系统以及张量的概念

    深度学习笔记:01快速构建一个手写数字识别系统 神经网络代码最好运行在GPU中,但是对于初学者来说运行在GPU上成本太高了,所以先运行在CPU中,就是慢一些. 一.安装keras框架 使用管理员模式打 ...

  9. 读书笔记:手写数字识别 ← 斋藤康毅

    求解机器学习问题的步骤可以分为"学习"和"推理"两个阶段. 本例假设"学习"阶段已经完成,并将学习到的权重和偏置参数保存在pickle文件s ...

最新文章

  1. Latex 添加多张图片技巧说明
  2. spring cloud config动态刷新_SpringCloud-Config
  3. python初步学习-查看文档及数据类型转换
  4. sklearn机器学习常用数据处理总结
  5. 图像的全局特征--LBP特征
  6. 【TensorFlow系列一】TensorFlow工作原理
  7. 小程序开发入门教程 一
  8. Bartender 让Mac选项列不再拥挤
  9. 22. DOM 简介
  10. USB 2.0学习笔记1——硬件/Lenovo
  11. matlab转换器dcdc,关于如何用 Simulink 设计 DC/DC 转换器的分析和介绍
  12. 打不开.chm文件jdk的API
  13. excel数据透视表之交叉表分组
  14. 由xubuntu桌面系统恢复到ubuntu桌面系统
  15. 【Unity Shader 描边效果_案例分享】
  16. 网站访问全过程涉及的网络协议详解
  17. 华雨打shanghtml单页网站源码
  18. 生产计划erp管理系统
  19. BI项目之报表复杂度评判标准乱弹
  20. 中石油两大油气田产量破9000万吨

热门文章

  1. linux查看文件前几行和后几行的命令
  2. 安装完Centos7,进去有欢迎界面,设置密码点击不了前进。
  3. MC20CB-04-TTS 四频段GSM/GPRS/GNSS MC20模块 应用
  4. 安装vue-cli 4058错误解决办法
  5. 德源希望教育救助中心第十所希望小学落户河北省涉县
  6. 常用开源软件开发平台和仓库(学生的福利)
  7. 国外物联网平台(1):亚马逊AWS IoT
  8. 向量操作与坐标转换相关方法
  9. 中国标准时间转换为年-月-日
  10. Tomcat的部署及常见问题的解决(IDEA)