基于人工神经网络的识别C语言,实验一基于人工神经网络的数码识别.doc

实验一基于人工神经网络的数码识别

《人工智能导论》课程

基于人工神经网络的数码识别

班级:计1103学号:201107010330姓名:贾梦洁

成绩评定:评阅老师:日 期:

实验报告正文一、实验目的?????基于神经网络的数字识别系统二、实验内容?通常实现手写体数字识别技术的方法有很多种,比如说Fisher线性判别方法,最小风险贝叶斯判别方法,朴素贝叶斯判别方法,神经网络方法等。这些方法都可以实现手写体数字的识别,本课题是采用后向传播(BP)神经网络算法,先用MATLAB自带的函数im2bw把输入的数字图像二值化处理,然后取得图片数字部分的最大行列和最小行列,对图片进行实际大小的裁剪,为接下来的归一化做铺垫,取得图像的矩阵特征值,输入到设置好的BP网络中,让网络学习,并保存网络,最后用sim函数仿真识别。运行程序后,训练好的神经网络对输入的数字进行识别。但是有时识别同一数字图片后所得出的结果会不相同,训练网络的时长,精确度也不相同。由此我们可以得出神经网络具有不稳定性和局限性,同时很多因素都能影响网络,比如加入噪声,所以神经网络仍需要人们进一步的研究。三、实验所用智能算法基本原理与流程?学习过程中由信号的正向传播与误差的逆向传播两个过程组成.?正向传播时,?模式作用于输入层,?经隐层处理后,?传入误差的逆向传播阶段,?将输出误差按某种子形式,?通过隐层向输入层逐层返回,?并“分摊”给各层的所有单元,?从而获得各层单元的参考误差或称误差信号,?以作为修改各单元权值的依据.?权值不断修改的过程,?也就是网络学习过程.?此过程一直进行到网络输出的误差准逐渐减少到可接受的程度或达到设定的学习次数为止.?BP网络模型包括其输入输出模型,?作用函数模型,?误差计算模型和自学习模型.?BP网络由输入层,?输出层以及一个或多个隐层节点互连而成的一种多层网,?这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系,?又不致使网络输出限制在-1和1之间.??该系统使用自建样本库,应用BP神经网络算法对样本进行训练识别。系统分为预处理、特征提取、分类器三部分。其中,预处理包括数据的读取??灰度转换,二值化,去噪,然后得到特征值,分类器的设计是整个系统的核心部分。具体程序流程图如下:?

四、系统构成与程序设计?#include?"tvec.h"?#include?"tmat.h"?#include?五、核心代码?#include?"tvec.h"?#include?"tmat.h"?#include??typedef?tmat?CMatrix;?typedef?tvec?CVector;一个简单易用的矩阵类库??????????????????使用简介:???初始化矩阵:?tmaxA(3,2);????????-生成一个3行2列的零阵?初始化矩阵:?tmaxB(2,2,a);??????-生成一个2行2列的矩阵并利用数组a的前2×2个元素为其赋值。???????????这里要求a至少要包含2×2个元素?给矩阵元素赋值: ?A(1,2)=1.0;?? ?-将1.0赋给矩阵A的第1行、第2列?取矩阵元素的值:?f=A(2,2);?????? ?-取出矩阵A第2行、第2列的值赋给f?矩阵的加、减、乘:?A=B+C;C=B*A;等等,可以像普通数据类型那样直接进行运算符运算?矩阵转置:????? ?transpose(A);?求矩阵行列式:?? ?det(A);????? 注意:必须是方阵?矩阵求逆:?????? ?inv(A);??注意:必须是方阵??得到矩阵的行数和列数:? ? A.nrows();??? A.ncols();??resize矩阵:?? A.resize(2,2);???????????-取原来A矩阵的前2×2个元素来构造新尺寸的A?

?另外,tvec.h则包含了一个矢量(向量)类库,这里也简要介绍一下??

初始化向量:?tvecA;???????? ?-生成一个一维的向量。默认初始值为0?初始化向量:?tvecB(4);????? ?-生成一个4维的向量?初始化向量:?tvecC(4,0.1);?? -生成一个4维的向量,并将每一维元素初始化为0.1?初始化向量:?tvecD(5,a);??? ?-生成一个5维的向量,并用数组a的前5个元素为其赋值?初始化向量:?tvecE(B);????? ?-由向量B来初始化向量E。相当于复制向量给向量的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博科光纤交换机java_带有光纤的可扩展,健壮和标准的Java Web服务

博科光纤交换机java这篇博客文章讨论了负载下的基准Web服务性能。 要了解有关Web服务性能理论的更多信息,请阅读利特尔定律,可伸缩性和容错 。 使用阻塞和异步IO对Web服务进行基准测试 Web应用程序(或Web服务)如何在负载下&#…

很棒的C语言入门笔记,推荐收藏!

点击蓝字关注我们c语言入门C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习…

自定义日历控android,Android自定义日历Calender代码实现

产品要做签到功能,签到功能要基于一个日历来进行,所以就根据 要求自定义了一个日历自定义控件相信做android都知道:(1)首先创建一个类,继承一个容器类或者是一个控件(2)然后就是你需要设置的属性等的,在attrs文件夹中(…

java jsf_将Java 8日期时间API与JSF和Java EE 7结合使用

java jsf如果您将Java 8与Java EE 7一起使用,则在尝试利用某些Java 8新功能时可能会遇到一些怪癖。 一个这样的怪癖是,默认情况下,新的Date-Time API不适用于许多Java EE 7 API,因为它们是为与java.util.Date和/或更旧的Date API一…

C语言的注释要注意几点

点击蓝字关注我们如果领导给你一个项目的源码让你阅读,并理解重构代码,但里面一句注释都没有,我想这肯定是之前同事“删库跑路”了。看一份源码什么很重要?除了各种代码规范之外,还有一个比较重要的就是注释。注释虽然…

java自动推断类型_推断:Facebook的新Java静态分析工具

java自动推断类型如何使用Facebook的Infer改善Java开发工作流程? 如果您与技术话题保持同步(如果您正在阅读此博客,我想您会这样做),那么您可能听说过Facebook 刚刚向公众发布的新工具:推断。 由于它来自F…

android官方架构组件,Android 架构组件官方文档01——LifeCycle

使用生命周期感知组件处理生命周期支持生命周期的组件执行操作以响应另一个组件(例如Activity和fragment)的生命周期状态更改。这些组件可帮助您生成组织性更好,并且通常更轻量的代码,这些代码更易于维护。常见的模式是在Activity和fragment的生命周期方…

C语言的核心和灵魂

点击蓝字关注我们提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了。今天我们想跟大家讲的是指针中的两个特有名词:“悬空指针”和“野指针”。悬空指针C语言中的指针可以指向一块内…

gradle排除依赖_如何从Gradle中的所有依赖项中排除库

gradle排除依赖我正在使用Spring Boot。 默认情况下,Spring Boot带有Logback。 我想使用log4j(出于任何原因..) 为了做到这一点,我不得不排除logback并添加新的log4j依赖项: 在此软件包中“隐藏”了logback&#xff…

android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

Android ActionBar搜索功能用法详解本文实例讲述了Android ActionBar搜索功能用法。分享给大家供大家参考,具体如下:使用ActionBar SearchView时的注意点:首先要吐槽一下Android的官方Guide文档 ,关于用法讲得不明确,可…

javaone_JavaOne 2015 –提交技巧和建议

javaone大家都知道JavaOne 。 感觉就像一直存在。 而且,即使我们跌宕起伏,而地理位置也不是我们想要的那样,旧金山也很昂贵,而且和。 这是有关各种Java的顶级会议。 今年又再次成为程序委员会(“ Java,DevO…

C语言_结构体总结,附实例源码

点击蓝字关注我们当前文章介绍动态堆空间内存分配与释放,C语言结构体定义、初始化、赋值、结构体数组、结构体指针的相关知识点,最后通过一个学生管理系统综合练习结构体数组的使用。1. 动态内存管理C语言代码----->编译----->链接------>可执行…

android webview file,Android WebView 不支持 H5 input type=file 解决方法

最近因为赶项目进度,因此将本来要用原生控件实现的界面,自己做了H5并嵌入webview中。发现点击H5中 input type"file" 标签 不能打开android资源管理器。通过网络搜索发现是因为 android webview 由于考虑安全原因屏蔽了 input type"file&…

maven 常量字符串过长_从基于Maven的Web应用程序获取版本字符串

maven 常量字符串过长打包maven项目时,它将自动在其中生成pom.properties文件,其中将包含版本,artifactId和groupId信息。 这些在运行时很方便拥有并显示给您的Web应用程序。 可以使用如下方法检索它。 public class Application {private S…

四大C语言知识总结

点击蓝字关注我们1、#define宏定义以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶段将用define定义的来内容进行了替换。因此在程序运行时,常量表中并…

android 5.0新增 ui 控件,android3.0新增ui控件示例说明.doc

android3.0新增ui控件示例说明Android3.0新增UI控件AdapterViewAnimator控件AdapterViewAnimator(堆View),已知子类有AdapterViewFlipper, StackView,是一系列View的集合,这些View叠加一起,并且View之间可以进行切换,并…

jdbc select语句_SELECT语句使用JDBC和Hibernate批量获取

jdbc select语句介绍 现在,我已经介绍了Hibernate对INSERT , UPDATE和DELETE语句的批处理支持,是时候分析SELECT语句结果集的批量提取了。 JDBC ResultSet提供了一个客户端Proxy游标,用于获取当前语句的返回数据。 执行该语句后&…

看懂开源项目,你得熟悉这几个 C++11 新特性

点击蓝字关注我们C11 中增加了许多的新特性。在本文中,我们来聊一下 lambda 表达式,闭包,std::function以及std::bind。lambda 表达式C11 中新增了 lambda 表达式这一语言特性。lambda 表达式可以让我们快速和便捷的创建一个 “函数”。下面是…

5元素升级android6,【五元素ifive X.7】无障碍升级,ifveX详细升级固件教程,快为爱机升级吧。...

android系统的乐趣就是可以随意的刷机,所以拿到如此高配置的ifiveX也是想随时体验最新的android系统。而很多朋友可能只会用设备,刷机这种比较技术性的动作就不太会弄了。也就在这周,才帮同事刷RUU把已经无法启动的G12刷了回来。所以刷机还是…

昆仑通态复制的程序可以用吗_昆仑通态专题(七):MCGS组态软件的设备窗口...

点击上方蓝色字体,关注我们设备窗口是MCGS嵌入版组态软件系统的重要组成部分,在设备窗口中建立系统与外部硬件设备的连接关系,使系统能够从外部设备读取数据并控制外部设备的工作状态,实现对工业过程设备的实时监控与操作。01 设备…