freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vc的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn)(編輯修改稿)

2025-01-11 02:23 本頁面
 

【文章內(nèi)容簡介】 了訓(xùn)練此網(wǎng)絡(luò),提供一幅某個數(shù)字的圖像并把 10個輸出單元的實際活性和期望活性加以比較,然后計算誤差,將實際活性與期望活性差值的平方定義為誤差。其次,改變網(wǎng)絡(luò)中所有聯(lián)接權(quán)值以減少誤差。針對每種數(shù)字的多種不同圖像重復(fù)訓(xùn)練,直到網(wǎng)絡(luò)能對每個數(shù)字正確地歸類為止。 實現(xiàn)上述訓(xùn)練過程的關(guān)鍵是必須改變的每個權(quán)值,且其變化量應(yīng)正比于權(quán)值改變時誤差的變化率,此量稱權(quán)值的誤差導(dǎo)數(shù),簡記為 EW。但是,要對 EW的有效計算是十分復(fù)雜棘手的問題。如果采取稍許擾動 每個權(quán)值,并觀察誤差如何變化,這種方法效率太低,因為要求對每一個權(quán)值都要單獨加擾動。 1979年前后,正在哈佛大學(xué)攻讀博士的 Werbos發(fā)明了一種高效的計算 EW的方法,即誤差反向傳播算法,只因發(fā)明后多年來未受重視,也沒有充分體會到它的用處,直到 1985年 Rumelhart和 Parker兩人各自再次發(fā)現(xiàn)該算法后才得以推廣。 首先研究網(wǎng)絡(luò)的單元是線性時誤差反向傳播的算法 . 首先計算改變一個單元活性水平時誤差的變化率 EA,再計算每個權(quán)值的誤差導(dǎo)數(shù)EW。對于輸出單元, EA只是實際輸出和期望輸出間的差值。為計算在輸出 層前面一層的一個隱單元的 Eel,首先辨別該隱單元和與它相聯(lián)的那些輸出用數(shù)字識別的 BP神經(jīng)網(wǎng)絡(luò)單元間的所有權(quán)值,然后把這些權(quán)值乘以這些輸出單元的 EA并求和,此和值即為所選定的隱單元的 EA。將所有隱單元的 EA計算出后,可用類似的方法計算其它層的 Eel值,計算的順序恰好與活性專播過網(wǎng)絡(luò)路徑相反的方向逐層進行,故稱為誤差反向傳基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 15 播算法。計算出一個單元的 EA后,再計算該單元每條輸入聯(lián)接的 EW, EW是 EA和經(jīng)過該輸入聯(lián)接活性的乘積。 對于非線性單元,反向傳播算法還包括另外一步,即在反向傳播前,必須把 FA變換為 EI, EI是 一個單元所收到的總輸入變化時誤差的變化率。 綜上所述,為了訓(xùn)練前向網(wǎng)絡(luò)完成某項任務(wù),必須調(diào)整每個單元的權(quán)值,即減小期望輸出與實際輸出之間的誤差,為此必須計算每個權(quán)值變化時誤差的變化,即誤差導(dǎo)數(shù) EW,而反向傳播算法是一種確定 EW使用的最有效的方法。誤差反傳學(xué)習(xí)算法一種改進算法可以用圖 32表示 ,它添加了多個隱層 . 圖 32誤差反向傳播學(xué)習(xí)算法網(wǎng)絡(luò)結(jié)構(gòu)圖 在如圖 BP網(wǎng)絡(luò),設(shè)單元 j、 i分別是輸出層和它前面一層中的一個單元。為計算輸出單元 j的活性,首先計算總 加權(quán)輸入 ,即 iji ii Wyx ?? ( ) 其中 Y是前面一層中第 1個單元的活性水平 ,Wij是第 i個單元和第 j個單元的聯(lián)接權(quán)值 . 其次,為了利用上述求得的總加權(quán)輸入 Xi來計算 Yi,必須使用某個函數(shù)來激活輸入與輸出函數(shù)。 一般常用 S 型函數(shù) : 11ii xy e? ? ( ) 在確 定了所有輸出單元的活性之后,利用下式計算網(wǎng)絡(luò)的誤差 : ? ?212 ijjE y d??? ( ) 式中 Yj是輸出層中第 j個單元的活性水平, dj是第 j個單元的期望輸出 概括起來反向傳播算法包括下列四個步驟 : 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 16 (1)一個輸出單元活性改變時的誤差導(dǎo)數(shù) EA,即實際活性與期望活性的差值: j j jjEEA y dy???? ( ) (2)計算一個單元所接受總輸入變化時的誤差導(dǎo)數(shù) EI, EI實際上等于上述步驟 (1)的結(jié)果乘以一個單元的總輸入變化時其輸出的變化率,即 ? ?1j j j jj j jE E EE I E A y yx y x? ? ?? ? ? ? ? ?? ? ? ( ) (3)計算一個與輸出單元聯(lián)接權(quán)值改變時的誤差變化率 EW。 jij j jij j ijxEEE W E I yW x W???? ? ? ?? ? ? ( ) 不難看出 ijEW 等于上述步驟 (2)的結(jié)果 jEI ,乘以與該輸出單元相連接單元 i的活性水平 jy (4)計算前面一層中一個單元活性改變時的誤差變化率,前面一層中一個單元活性的改變會影響與該單元相連接的所有輸出單元的活性。因此,為了計算對誤差總的影響,把對各輸出單元的所有單獨影響相加 . ijj jjjj jii WEIyxxEyEEA ?? ?????????? ( ) 運用步驟 (2)和 (4),可把一層單元的 EA變成前面一層單元的 FA,為了得到期望的前面各層的 EA。可重復(fù)此計算步驟。當(dāng)?shù)玫揭粋€單元的 EA后,可用步驟 (2)和 (3)來計算作用于它的輸入聯(lián)接上的 EW。 BP 算法的計算機實現(xiàn)流程 BP算法的計算機實現(xiàn)按下述步驟進行 : (1)初始化,對所有權(quán)值賦以隨機任意小值,并對閥值設(shè)定初值 。 (2)給定訓(xùn)練數(shù)據(jù)集,即提供輸入向量 x和期望輸出 y: (3)計算實際輸出 y ??????? ?i iijj xWfy ( ) 其 中 f 函數(shù)為 Sigmoid 函數(shù) : (4)調(diào)整權(quán)值,按誤差反向傳播方向,從輸出節(jié)點開始返回到隱層按下式修正權(quán)值 . ? ? ? ? ijijij ytWtW ????? 1 ( ) 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 17 其中 ? 為大于 0的增益, j? 為節(jié)點 j的誤差, j? 的計算根據(jù)節(jié)點 j的形式不同,由下式分別計算 : ? ?? ?為隱節(jié)點當(dāng)為輸出節(jié)點當(dāng)jWyyjyyyyjkk kiiijjiij ?????????1)(1 ( ) (5)返回 (2)步重復(fù),直至誤差滿足要求為止。 激活函數(shù) (Activation transfer function)是一個神經(jīng)元及網(wǎng)絡(luò)的核心。網(wǎng)絡(luò)解決問題的能力與功效除了與網(wǎng)絡(luò)結(jié)構(gòu)有關(guān),在很大程度上取決于網(wǎng)絡(luò)所采用的激活函數(shù)。 激活函數(shù)的基本作用是 : ( 1)控制輸入對輸出的激活作用 。 ( 2)對輸入、輸出進行函數(shù)轉(zhuǎn)換 。 ( 3)可將可能無限域的輸入變換成指定的有限范圍內(nèi)的輸出。 在這個設(shè)計的 BP神經(jīng)網(wǎng)絡(luò)中我 們選擇的是 S型( Sigmod型)激活函數(shù)。 S型激活函數(shù)將任意輸入值壓縮到 (0,1)的范圍內(nèi),如圖 33所示。 帶有偏差的對數(shù) S型曲線 帶有偏差的雙曲 S型函數(shù) 圖 33 S型激活函數(shù) 此種激活函數(shù)常用對數(shù)或雙曲正切等一類 S形狀的曲線來表示,如對數(shù) S型激活函數(shù)關(guān)系為 : ? ?bnef ???? 1 1 () 而雙曲正切 S型 曲線的輸入輸出函數(shù)關(guān)系為: 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 18 ? ?? ?bnbneef??????? 11 2 ( ) S型激活函數(shù)具有非線性放大增益,對任意輸入的增益等于在輸入 /輸出曲線中該輸入點處的曲線斜率值。當(dāng)輸入由無窮增大到零時,其增益由 0增至最大,然后當(dāng)輸入由 0增加至正無窮時,其增益又由最大逐漸降低至 0,并總為正值。利用該函數(shù)可以使同一神經(jīng)網(wǎng)絡(luò)既能處理小信號,也能處理大信號。因為該函數(shù)的中間高增益區(qū)解決了處理小信號的間題,而在伸向兩邊的低增益區(qū)正好適用于處理大信號 的輸入。 一般地,稱一個神經(jīng)網(wǎng)絡(luò)是線性或非線性是由網(wǎng)絡(luò)神經(jīng)元中所具有的激活函數(shù)的線性或非線性來決定的。 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 19 第 4 章數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 幾種常用的解決問題的軟件開發(fā)方法,一種是對問題追述的方法,也就是從問題的結(jié)果分析起一步一步找到問題的源頭。另一種解決問題的方法是尋找容易解決的或者是己經(jīng)解決的相關(guān)的問題轉(zhuǎn)而應(yīng)用到解決當(dāng)前的問題來。但是當(dāng)前軟件開發(fā)中更為流行和常用的方法是逐步求精法。這種方法是一種由頂向下的方法,也就是由一般到特殊的方法 ,它的基本思想是將原始的問題分割成若干個子問題,子問題較整個大問題容易解決。 本文程序設(shè)計采用逐步求精法,將整個系統(tǒng)問題分割成若干個子問題來做,主要包括圖像數(shù)據(jù)輸入模塊 GetDIB()、二值化模塊 Threshold()、平滑濾波模塊 Smooth()、分割模塊 divide()、字符切分模塊 CharSegment()、字符識別模塊 CharRecognition()。首先分別對每個模塊進行單元測試分析和模塊測試,然后再組合成系統(tǒng),進行系統(tǒng)測試。 圖 41 系統(tǒng)邏輯模型流程 圖 此圖為系統(tǒng)邏輯模型流程圖,其中細(xì)箭頭代表程序的進程,整個程序就是按上圖所示流程編寫的。 面對琳瑯滿目的各種開發(fā)環(huán)境和開發(fā)軟件 ,我沒有使用 MATLAB,最主要的原因是VC對內(nèi)存的掌控很好 ,這對運算量極大的 BP算法有著關(guān)鍵的作用 ,要知道 ,設(shè)計一個 BP網(wǎng)絡(luò)不難 ,難的是設(shè)計一個高效 ,高速 ,穩(wěn)定的 BP網(wǎng)絡(luò) ,這就需要我們來對內(nèi)存進行優(yōu)化 ,對算法進行最大程度的發(fā)掘 .否則設(shè)計出來的 BP算法將是不健壯、不穩(wěn)定、不實用的 .一定要注意在設(shè)計時盡可能多的釋放掉不使用的內(nèi)存 . Visua1C++, 是 Microsoft公司開發(fā)的 Visual Studio集成開發(fā)環(huán)境中功能最為強大、代碼效率最高的開發(fā)工共。利用 VisualC++ Win32應(yīng)用程序,一種方式是基于 Windows API的 C編程方式,另一種是基于 MFC的 C++編程方式。 C基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計與實現(xiàn) 20 編程方式是傳統(tǒng)的、久經(jīng)考驗的編程方式,代碼的效率較高,但開發(fā)難度與開發(fā)的工作量都很大。而 C++編程方式代碼運行效率相對較低,其開發(fā)難度小、開發(fā)工作量小、源代碼效率高,尤其 Microsoft基礎(chǔ)類庫( Microsoft Foundation Class Library,MFC)為用戶提供了 Windows95/NT環(huán)境下面向?qū)ο蟮某绦蜷_發(fā)界面,它提供了大量預(yù)先編寫好的類及支持代碼,用于處理多數(shù)標(biāo)準(zhǔn) Windows編程任務(wù),因此大大簡化了 Windows應(yīng)用程序編寫工作。 MFC類庫的優(yōu)越性表現(xiàn)在以下幾個方面: MFC幾乎完整地封裝了 WindowsAPI函數(shù)。包括窗口函數(shù)、消息、控件、菜單、對話框、 GDI對象、對象鏈接,以及多文檔界面等。 MFC支持多線程,所有的應(yīng)用至少有一個線程,這個線程由 CWinApp類的對象創(chuàng)建,被稱為“主”線程口為方便多線程編程, MFC還提供了同步對象類。 MFC庫提供了自動消息處理功能。 MFC庫自動處理每一個 Windows消息,且每一條 Windows消息被直接映射到一個進行處理的成員函數(shù)。 BMP 圖像格式簡介 程序中能夠進行處理的是灰度圖像。灰度圖是只含亮度信息,不含色彩信息的圖像,就像平時看到亮度由暗到明變化連續(xù)的黑白照片一樣。因此要表示灰度圖,就需要把亮度值進行量化,通常劃分成 0到 255共 256個級別, 0最暗 (全黑 ), 255最亮 (全白 ),并將所有灰度圖像轉(zhuǎn)化為 DIB(DeviceIndependent Bitmap設(shè)備無關(guān)位圖 )位圖文件格式。 位圖 (BMP)文件中 DIB的結(jié)構(gòu)由四部分組成 :第 1部分為位圖文件頭 BITMAPFILEH EADER,指定文件為 BMP文件類型,并且指定了從文件頭到實際位圖數(shù)據(jù)的偏移字節(jié)數(shù) 。第二部分為位圖信息 BITMAPINFOHEADER,其中說明了位圖包含的基本信息,如大小,寬度,高度,顏色位數(shù),水平和垂直分辨率等 。第三部分調(diào)色板 (Palette)保存顏色信息 。第四部分就是實際的圖像數(shù)據(jù)。由于 DIB位圖能獨立的保存固有的圖像信息,能在不同的系統(tǒng)中重現(xiàn)其圖像,故成為 Windows環(huán)境中的基本圖像格式。由 MFC中沒有設(shè)計一處理 DIB位圖的類,因此,利用 Visual C++進行 DIB位圖編程時只能使用“非面向?qū)ο蟆钡姆椒?,即直接調(diào)用 Win32 SDK的有關(guān) API函數(shù),這是一個很大的缺陷,彌補的最好方法就是定義一個處理 DIB位圖的專用類,比如一個名為 CDib的類,在其中封裝必需的 DIB數(shù)據(jù)成員和處理函數(shù)。 但是在構(gòu)建 CDib類時會遇到許多的困難,因為 Win32SDK沒有提供多少直接處理
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1