国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python(TensorFlow框架)實現手寫數字識別系統的方法

2020-02-15 21:33:52
字體:
來源:轉載
供稿:網友

手寫數字識別算法的設計與實現

本文使用python基于TensorFlow設計手寫數字識別算法,并編程實現GUI界面,構建手寫數字識別系統。這是本人的本科畢業論文課題,當然,這個也是機器學習的基本問題。本博文不會以論文的形式展現,而是以編程實戰完成機器學習項目的角度去描述。

項目要求:本文主要解決的問題是手寫數字識別,最終要完成一個識別系統。

設計識別率高的算法,實現快速識別的系統。

1 LeNet-5模型的介紹

本文實現手寫數字識別,使用的是卷積神經網絡,建模思想來自LeNet-5,如下圖所示:


這是原始的應用于手寫數字識別的網絡,我認為這也是最簡單的深度網絡。

LeNet-5不包括輸入,一共7層,較低層由卷積層和最大池化層交替構成,更高層則是全連接和高斯連接。

LeNet-5的輸入與BP神經網路的不一樣。這里假設圖像是黑白的,那么LeNet-5的輸入是一個32*32的二維矩陣。同時,輸入與下一層并不是全連接的,而是進行稀疏連接。本層每個神經元的輸入來自于前一層神經元的局部區域(5×5),卷積核對原始圖像卷積的結果加上相應的閾值,得出的結果再經過激活函數處理,輸出即形成卷積層(C層)。卷積層中的每個特征映射都各自共享權重和閾值,這樣能大大減少訓練開銷。降采樣層(S層)為減少數據量同時保存有用信息,進行亞抽樣。

第一個卷積層(C1層)由6個特征映射構成,每個特征映射是一個28×28的神經元陣列,其中每個神經元負責從5×5的區域通過卷積濾波器提取局部特征。一般情況下,濾波器數量越多,就會得出越多的特征映射,反映越多的原始圖像的特征。本層訓練參數共6×(5×5+1)=156個,每個像素點都是由上層5×5=25個像素點和1個閾值連接計算所得,共28×28×156=122304個連接。

S2層是對應上述6個特征映射的降采樣層(pooling層)。pooling層的實現方法有兩種,分別是max-pooling和mean-pooling,LeNet-5采用的是mean-pooling,即取n×n區域內像素的均值。C1通過2×2的窗口區域像素求均值再加上本層的閾值,然后經過激活函數的處理,得到S2層。pooling的實現,在保存圖片信息的基礎上,減少了權重參數,降低了計算成本,還能控制過擬合。本層學習參數共有1*6+6=12個,S2中的每個像素都與C1層中的2×2個像素和1個閾值相連,共6×(2×2+1)×14×14=5880個連接。

S2層和C3層的連接比較復雜。C3卷積層是由16個大小為10×10的特征映射組成的,當中的每個特征映射與S2層的若干個特征映射的局部感受野(大小為5×5)相連。其中,前6個特征映射與S2層連續3個特征映射相連,后面接著的6個映射與S2層的連續的4個特征映射相連,然后的3個特征映射與S2層不連續的4個特征映射相連,最后一個映射與S2層的所有特征映射相連。此處卷積核大小為5×5,所以學習參數共有6×(3×5×5+1)+9×(4×5×5+1)+1×(6×5×5+1)=1516個參數。而圖像大小為28×28,因此共有151600個連接。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金湖县| 新宾| 砀山县| 长丰县| 阜阳市| 梅州市| 泗水县| 秀山| 胶南市| 鹤岗市| 永安市| 柞水县| 加查县| 道孚县| 延吉市| 杭州市| 新营市| 九江市| 兴宁市| 巫山县| 门头沟区| 长宁区| 白城市| 塔河县| 夹江县| 驻马店市| 息烽县| 含山县| 三都| 敦化市| 汝城县| 鄂托克前旗| 荔浦县| 英山县| 神池县| 昆山市| 太谷县| 绍兴县| 富平县| 古丈县| 三门县|