计算机模式识别论文手写数字识别Word文档格式.docx

上传人:b****6 文档编号:17513340 上传时间:2022-12-06 格式:DOCX 页数:11 大小:214.74KB
下载 相关 举报
计算机模式识别论文手写数字识别Word文档格式.docx_第1页
第1页 / 共11页
计算机模式识别论文手写数字识别Word文档格式.docx_第2页
第2页 / 共11页
计算机模式识别论文手写数字识别Word文档格式.docx_第3页
第3页 / 共11页
计算机模式识别论文手写数字识别Word文档格式.docx_第4页
第4页 / 共11页
计算机模式识别论文手写数字识别Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

计算机模式识别论文手写数字识别Word文档格式.docx

《计算机模式识别论文手写数字识别Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机模式识别论文手写数字识别Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

计算机模式识别论文手写数字识别Word文档格式.docx

输出ypj(j=1,2,⋯,q),其误差为

式中

为期望输出.P个样本的全局误差为将式

(3)代入得

输出层权值的变化采用累计误差BP算法调整wjk使全局误差E变小,即

式(5)中η为学习率.现定义误差信号为

将式(3)代入可得第一项为

第二项为输出层传递函数f2(x)的偏微分

将式(7)和(8)代入可得误差信号为

则输出层各神经元权值△wjk调整公式将式(9)代入可定义为

在得到输出层权值调整公式后,需要定义隐层权值△vki调整公式

根据输出层各神经元权值△wjk调整公式推导过程,可得△vki为

.

四、BP算法的实现程序代码

以VC++为手段,在BP神经网络的基础上进行编程以实现手写数字的识别,以下是部分实验代码:

1.// 

MainFrm.cpp 

:

 

implementation 

of 

the 

CMainFrame 

class 

 

2.// 

2005.1.13-16:

02 

By 

Superman 

3. 

4.#include 

"

stdafx.h"

5.#include 

DSPLIT.h"

6. 

7.#include 

MainFrm.h"

8.#include 

DynSplitView2.h"

9. 

10.#ifdef 

_DEBUG 

11.#define 

new 

DEBUG_NEW 

12.#undef 

THIS_FILE 

13.static 

char 

THIS_FILE[] 

__FILE__;

14.#endif 

15. 

16.///////////////////////////////////////////////////////////////////////////// 

17.// 

18. 

19.IMPLEMENT_DYNCREATE(CMainFrame, 

CFrameWnd) 

20. 

21.BEGIN_MESSAGE_MAP(CMainFrame, 

22. 

//{{AFX_MSG_MAP(CMainFrame) 

23. 

ON_WM_CREATE() 

24. 

//}}AFX_MSG_MAP 

25.END_MESSAGE_MAP() 

26. 

27.static 

UINT 

indicators[] 

28.{ 

29. 

ID_SEPARATOR, 

// 

status 

line 

indicator 

30. 

ID_INDICATOR_CAPS, 

31. 

ID_INDICATOR_NUM, 

32. 

ID_INDICATOR_SCRL, 

33.};

34. 

35.///////////////////////////////////////////////////////////////////////////// 

36.// 

construction/destruction 

37. 

38.CMainFrame:

CMainFrame() 

39.{ 

40. 

TODO:

add 

member 

initialization 

code 

here 

41. 

42.} 

43. 

44.CMainFrame:

~CMainFrame() 

45.{ 

46.} 

47. 

48.int 

CMainFrame:

OnCreate(LPCREATESTRUCT 

lpCreateStruct) 

49.{ 

50. 

if 

(CFrameWnd:

OnCreate(lpCreateStruct) 

== 

-1) 

51. 

return 

-1;

52. 

53. 

(!

m_wndToolBar.CreateEx(this, 

TBSTYLE_FLAT, 

WS_CHILD 

WS_VISIBLE 

CBRS_TOP 

54. 

CBRS_GRIPPER 

CBRS_TOOLTIPS 

CBRS_FLYBY 

CBRS_SIZE_DYNAMIC) 

|| 

55. 

!

m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 

56. 

57. 

TRACE0("

Failed 

to 

create 

toolbar\n"

);

58. 

fail 

59. 

60. 

61. 

m_wndStatusBar.Create(this) 

62. 

m_wndStatusBar.SetIndicators(indicators, 

63. 

sizeof(indicators)/sizeof(UINT))) 

64. 

65. 

bar\n"

66. 

67. 

68. 

69. 

Delete 

these 

three 

lines 

you 

don'

want 

toolbar 

70. 

be 

dockable 

71. 

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

72. 

EnableDocking(CBRS_ALIGN_ANY);

73. 

DockControlBar(&

m_wndToolBar);

74. 

75. 

0;

76.} 

77. 

78.BOOL 

PreCreateWindow(CREATESTRUCT&

cs) 

79.{ 

80. 

if( 

CFrameWnd:

PreCreateWindow(cs) 

) 

81. 

FALSE;

82. 

Modify 

Window 

or 

styles 

by 

modifying 

83. 

CREATESTRUCT 

cs 

84. 

85. 

TRUE;

86.} 

87. 

88.///////////////////////////////////////////////////////////////////////////// 

89.// 

diagnostics 

90. 

91.#ifdef 

92.void 

AssertValid() 

const 

93.{ 

94. 

AssertValid();

95.} 

96. 

97.void 

Dump(CDumpContext&

dc) 

98.{ 

99. 

Dump(dc);

100.} 

101. 

102.#endif 

//_DEBUG 

103. 

104.///////////////////////////////////////////////////////////////////////////// 

105.// 

message 

handlers 

106. 

107. 

108.BOOL 

OnCreateClient(LPCREATESTRUCT 

lpcs, 

CCreateContext* 

pContext) 

109.{ 

110. 

splitter 

with 

row, 

columns 

111. 

m_wndSplitter.CreateStatic(this, 

1, 

2)) 

112. 

113. 

Splitter 

window\n"

114. 

115. 

116. 

117. 

first 

pane 

default 

view 

in 

column 

118. 

m_wndSplitter.CreateView(0, 

0, 

119. 

pContext->

m_pNewViewClass, 

CSize(320, 

150), 

pContext)) 

120. 

121. 

pane\n"

122. 

123. 

124. 

125. 

second 

an 

input 

126. 

127. 

RUNTIME_CLASS(CDynSplitView2), 

CSize(0, 

0), 

128. 

129. 

130. 

131. 

132. 

133. 

activate 

134. 

SetActiveView((CView*)m_wndSplitter.GetPane(0,0));

135. 

136. 

137.} 

编程结束后,利用鼠标在屏幕上移动形成手写数字,由程序负责进行识别。

下图为演示结果:

五、结果与分析

神经网络的训练过程是识别字符的基础,十分重要,直接关系到识别率的高低.输送训练样本至BP神经网络训练,在梯度方向上反复调整权值使网络平方和误差最小.为使网络对输入向量有一定鲁棒性,可先用无噪声的样本对网络进行训练,直到其平方和误差最小,再用含噪声的样本进行训练,保证网络对噪声不敏感.训练完毕,把待识别数字送BP神经网络中进行仿真测试

权值初始化为(-1,1)之间的随机数,期望误差为0.01,最大训练步数5000,动量因子为0.95,隐层和输出层均采用“logsig”函数,手写数字的识别结果如图2(a)~(e)所示,以数字4为例给出处理过程

对1000个手写数字(每个数字取100幅不同的图像)进行识别,其识别结果如表1所示.

六、结论

针对传统的手写数字识别中识别率和可靠性不高的情况,提出了将BP神经网络应用于数字识别,并通过实验,证实BP神经网络算法识别率较高,具备可行性.。

随着国家信息化进程的加速,手写数字识别的应用需求将越来越广泛,因此应当加强这方面的研究工作。

应用系统的性能的关键与瓶颈仍然在于手写数字识别核心算法性能上,最终目标是研究零误识率和低拒识率的高速识别算法。

在实际应用中,没有任何一种方法可以达到100%的识别正确,我们要做的是充分发掘新的、更适宜实际问题的算法,以便能尽可能好地解决实际的手写识别问题,使该技术得到最大程度的应用。

参考文献.

(1) 张猛等.手写体数字识别中图像预处理的研究[J].微计算机信息,2006

(2) PandyaAS,MacyRB.神经网络模式识别及其实现[M].徐勇,荆涛译.北京:

电子工业出版社,1999.

(3) 朱小燕等.手写体字符识别研究[J].模式识别与人工智能,2000

(4) 马少平等.基于模糊方向线索特征的手写体汉字识别[J].清华大学学报,1997

(5)边肇祺张学工《模式识别》,清华大学出版社

(6)蔡自兴,徐光祜编著人工智能及其应用清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1