最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python與人工神經(jīng)網(wǎng)絡:使用神經(jīng)網(wǎng)絡識別手寫圖像介紹

 更新時間:2017年12月19日 09:21:40   投稿:mengwei  
文章主要介紹什么是神經(jīng)網(wǎng)絡,感知機的概念和模型,以及新一代的S曲線神經(jīng)元系統(tǒng)等相關內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。

人體的視覺系統(tǒng)是一個相當神奇的存在,對于下面的一串手寫圖像,可以毫不費力的識別出他們是504192,輕松到讓人都忘記了其實這是一個復雜的工作。

實際上在我們的大腦的左腦和右腦的皮層都有一個第一視覺區(qū)域,叫做V1,里面有14億視覺神經(jīng)元。而且,在我們識別上面的圖像的時候,工作的不止有V1,還有V2、V3、V4、V5,所以這么一看,我們確實威武。

但是讓計算機進行模式識別,就比較復雜了,主要困難在于我們?nèi)绾谓o計算機描述一個數(shù)字9在圖像上應該是怎樣的,比如我們跟計算機說,9的上面是一個圈,下右邊是1豎。然而有的人寫9會帶勾,有的人還會在圈周圍多出點什么,總的來說,這種描述法太容易出現(xiàn)其他狀況。況且,我們這里討論的還只是數(shù)字,涉及到字母、漢字、符號就回更復雜。

于是人們就有了另外一種途徑,那就是我們不用告訴計算機什么是9,我們可以把他當作一個小孩子,讓他見很多9的圖片,對他說,這是9,記得哈。慢慢的他就形成了自己的評判標準,等他長大了,自然就知道以后遇到的圖片是不是9了。讓我們?nèi)藢W習的方式是見聞,讓計算機學習的就是給他數(shù)據(jù),這個數(shù)據(jù)通常被叫做訓練樣本(如圖),而這套學習的方法,就是神經(jīng)網(wǎng)絡了。

感知機(Perceptrons)

在說人工神經(jīng)網(wǎng)絡之前,我們先說另外一個人工神經(jīng)元系統(tǒng),叫感知機(Perceptrons)。感知機模型是這樣的:

其中x1,x2,x3是二進制的輸入值,output是二進制的輸出值。在每個輸入端,還會有一個權重,w1,w2,w3。output取決于x1*w1+x2*w2+x3*w3,如果他小于等于一個臨界值的時候,output就輸出0,大于等于那個臨界值的時候,output就輸出1。當然輸入值可以是任意多個,用公式表示就是:

output={01if ∑jwjxj≤ thresholdif ∑jwjxj> threshold

感知機模型就這么簡單,他是一個相當好的決策系統(tǒng),用來解決是或者不是,去或者不去,熟悉我的朋友可能知道我從古代儒家修身的功過格受啟發(fā),自己制定的一套決策系統(tǒng),也是用因素*權重然后匯總,看得到的正面因素占優(yōu)還是負面的因素占優(yōu),最后做決策,真是相當好用,只不過那時候還不知道感知機模型。

我們把Σwjxj用w·x表示,把臨界值提到等號右邊,用-b表示,那么上面的等式就如下所示:

b一般稱作偏差。

既然有一層的感知機模型,多層的就很好理解了,如圖:

這個多層(從左到右)的感知機里面,第一層的感知機比較簡單,只根據(jù)輸入的值和權重就可以得出結果,第二層的結果就得根據(jù)第一層的結果和相應的的權重了,與復雜度相對應,他也就可以用來做更加復雜和抽象的決定,第三層就更復雜了。

這種上世紀五十年代就出來的神經(jīng)元系統(tǒng)功能強大,但是對于機器學習有一個重大的缺陷。我們教小孩子的時候,小孩子進步一點點,我們就鼓勵他一下,小孩子退步一點點,我們就批評一下,他從我們的批評和鼓勵中自動的去調(diào)整自己的認知,慢慢的成長。但是這個感知機就不同了,他的輸入值只有0和1,他的成長沒有一點點的說法,所以壓根就不知道怎么調(diào)整,可能內(nèi)部參數(shù)調(diào)整的亂七八糟,輸出的結果還是不變的。要實現(xiàn)學習和進步,就得有這么一點點一點點進步的概念,也就是說,w或者b變了一點點,那么輸出值就得變一點點,總的來說,就是要實現(xiàn)下圖所示的效果:

于是新一代的神經(jīng)元系統(tǒng)就出世了,他叫S曲線神經(jīng)元系統(tǒng)(Sigmoid neurons)。

S曲線神經(jīng)元系統(tǒng)(Sigmoid neurons)

簡單來說,S曲線神經(jīng)元系統(tǒng)和感知機系統(tǒng)的區(qū)別在于我們的輸入值x1,x2,x3和輸出值output都不是0和1了,改為從0到1之間的任何實數(shù)。而且規(guī)定,對我輸出值output,由于是與w·x和b相關的,我們可以用σ(w·x,b)表示,他滿足函數(shù):

把w·x和b帶進去,就是:

試著看下,如果當w·x + b→+∞的時候,e^-(w·x+b)→0,σ(w·x,b)→1。相反,當w·x + b→-∞的時候,σ(w·x,b)→0,所以,感知機系統(tǒng)也是一個特殊的S曲線神經(jīng)元系統(tǒng)。

至于為什么σ(w·x,b)必須滿足上述的函數(shù)呢。請看σ(z)的圖形:

他的定義域是(-∞,+∞),值域是(0,1),也就是說,不管w·x和b怎么折騰,總能保證輸出值在0到1之間。特別的,當我們對一個事情做決定時,比如我們讓計算機決定看到的一個圖形是不是9,0到1之間的一個數(shù),可以在物理意義上對應他是9的概率。(我后來才意識道,這個說法是錯誤的)

我們說,我們拋棄感知器,采用S曲線神經(jīng)元系統(tǒng),是為了讓輸出結果的變動和我們采取權重w和偏離b的變動對應起來。那么對于方程output = σ(w·x,b),由于輸入值x是已知的常數(shù),根據(jù)全微分的定義,有:

輸出值的變動和我們選用的參數(shù)變動就對應起來了。

構造我們的神經(jīng)網(wǎng)絡

在我們構建神經(jīng)網(wǎng)絡的過程中,一般也會把輸入的數(shù)據(jù)當作神經(jīng)元,輸入的那層叫做輸入層,中間可能有多層,通常被叫做隱藏層,輸出的那一層就叫做輸出層。如圖:

在設計神經(jīng)網(wǎng)絡時,一般會采取簡單粗暴的方式,比如我們要讓計算機識別手寫稿的掃描件圖像,其中的一個字的圖像像素個數(shù)是64*64=4096個,那么我們設計神經(jīng)網(wǎng)絡的時候,輸入層神經(jīng)元個數(shù)就是4096個,其中每個神經(jīng)元的輸入數(shù)據(jù)就是該像素的灰度值(參照文章的第一幅圖)歸一化成0到1之間的數(shù)值。而我們要識別出的結果,可能包括數(shù)字0-9加26個大大小寫字母再加六千常用漢字,那我們設計的輸出層神經(jīng)元個數(shù)就用過是10+26*2+6000=6062個,其中每個神經(jīng)元對應一個我們要識別的結果。

具體到本實例中,訓練樣本和識別測試數(shù)據(jù)是28*28像素的,輸出結果只有10個數(shù)字,那么輸入層就應該是786個神經(jīng)元,輸出層是10個神經(jīng)元。至于中間隱藏層的神經(jīng)元,作者選了15個,說是經(jīng)過了多次實驗,15個的效果比較好。就我的理解,應該是越多約好的(不一定正確),不過越多也意味著運算量越大,所以作者最后選了15個。最終設計的結果如圖:

最后還有一個問題,如果是連續(xù)的書寫手稿,怎么把他分割成一個個的。作者說實際上這個問題可以在我們完成通過神經(jīng)網(wǎng)絡進行識別之后再說,因為識別出來誰都不像的,就說明應該要分割了,那我們也就跟著作者的思路,暫時先不管。

總結

以上就是本文關于Python與人工神經(jīng)網(wǎng)絡:使用神經(jīng)網(wǎng)絡識別手寫圖像介紹的全部內(nèi)容嗎,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

神經(jīng)網(wǎng)絡理論基礎及Python實現(xiàn)詳解

神經(jīng)網(wǎng)絡python源碼分享

70行Java代碼實現(xiàn)深度神經(jīng)網(wǎng)絡算法分享

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • Pytorch配置GPU環(huán)境方式

    Pytorch配置GPU環(huán)境方式

    這篇文章主要介紹了Pytorch配置GPU環(huán)境方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python cookbook(數(shù)據(jù)結構與算法)將序列分解為單獨變量的方法

    Python cookbook(數(shù)據(jù)結構與算法)將序列分解為單獨變量的方法

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結構與算法)將序列分解為單獨變量的方法,結合實例形式分析了Python序列賦值實現(xiàn)的分解成單獨變量功能相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • Pandas中Dataframe合并的實現(xiàn)

    Pandas中Dataframe合并的實現(xiàn)

    本文主要介紹了如何使用Pandas來合并Series和Dataframe,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Python使用os模塊實現(xiàn)更高效地讀寫文件

    Python使用os模塊實現(xiàn)更高效地讀寫文件

    os是python標準庫,包含幾百個函數(shù)常用路徑操作、進程管理、環(huán)境參數(shù)等好多類。本文將使用os模塊實現(xiàn)更高效地讀寫文件,感興趣的可以學習一下
    2022-07-07
  • Django和websocket實現(xiàn)簡單的多人聊天的示例代碼

    Django和websocket實現(xiàn)簡單的多人聊天的示例代碼

    本文主要介紹了使用Django和WebSocket實現(xiàn)一個簡單的多人聊天應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Python面向對象之類和對象實例詳解

    Python面向對象之類和對象實例詳解

    這篇文章主要介紹了Python面向對象之類和對象,結合實例形式詳細分析了Python面向對象相關的繼承、多態(tài)、類及對象等概念、原理、操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12
  • Python讀取excel文件中帶公式的值的實現(xiàn)

    Python讀取excel文件中帶公式的值的實現(xiàn)

    這篇文章主要介紹了Python讀取excel文件中帶公式的值的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python3+PyQt5實現(xiàn)自定義流體混合窗口部件

    python3+PyQt5實現(xiàn)自定義流體混合窗口部件

    這篇文章主要為大家詳細介紹了python3+PyQt5實現(xiàn)自定義流體混合窗口部件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python+decimal完成精度計算的示例詳解

    Python+decimal完成精度計算的示例詳解

    在進行小數(shù)計算的時候使用float,經(jīng)常會出現(xiàn)小數(shù)位不精確的情況。在python編程中,推薦使用decimal來完成小數(shù)位的精度計算。本文將通過示例詳細說說decimal的使用,需要的可以參考一下
    2022-10-10
  • Python matplotlib繪制散點圖的實例代碼

    Python matplotlib繪制散點圖的實例代碼

    這篇文章主要給大家介紹了關于Python matplotlib繪制散點圖的相關資料,所謂散點圖就是反映兩組變量每個數(shù)據(jù)點的值,并且從散點圖可以看出它們之間的相關性,需要的朋友可以參考下
    2021-06-06

最新評論

洞口县| 广南县| 昂仁县| 道孚县| 蓝山县| 西吉县| 九龙县| 荆门市| 庐江县| 海城市| 寻甸| 乌鲁木齐市| 六盘水市| 德令哈市| 东丽区| 玛沁县| 新密市| 巴林左旗| 甘肃省| 江口县| 平阳县| 临夏县| 晋江市| 宾川县| 德钦县| 漠河县| 揭阳市| 鄢陵县| 鄯善县| 青冈县| 四会市| 周至县| 恩平市| 通渭县| 寿阳县| 乐平市| 吉木乃县| 壤塘县| 洛隆县| 达尔| 富裕县|