亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

(Python實現(xiàn))

系統(tǒng) 1837 0

聲明:本人為機器學習初學者,此博文純?yōu)閭€人學習總結(jié)之用,難免出現(xiàn)紕漏錯誤之處,歡迎各位批評指正,不惜吝教!


編程環(huán)境:Anaconda3 , Python3.7


編程練習介紹

在本練習中,您將使用與之前編程作業(yè)(邏輯回歸識別手寫數(shù)字)中相同的訓練集,從而實現(xiàn)神經(jīng)網(wǎng)絡向前傳播算法的手寫數(shù)字識別。 神經(jīng)網(wǎng)絡相比較邏輯回歸而言,能夠表示非線性假設的復雜模型。而邏輯回歸不能形成更復雜的假設,因為它只是一個線性分類器.。本次的編程練習,還將使用已經(jīng)訓練過的神經(jīng)網(wǎng)絡中的參數(shù)。 您的目標是實現(xiàn)向前傳播算法并使用我們的參數(shù)進行預測。 在下周的練習中,將編寫神經(jīng)網(wǎng)絡參數(shù)的反向傳播算法。

數(shù)據(jù)分析

本次的編程練習,提供兩個文件分別是:ex3data1.mat 和 ex3weights.mat 點擊鏈接即可獲取

  • ex3data1.mat 中包含5000個手寫數(shù)字訓練示例的數(shù)據(jù)集: 0~9 中十個數(shù)字,每個數(shù)字有500個樣式。共5000樣本數(shù)據(jù)。
    每個訓練樣例 20像素*20像素 ,展開成向量為400維行向量,由于每個訓練樣例都為數(shù)據(jù)矩陣X中的一行,所以X 5000行 400列 , 而標簽矩陣y 5000行 1列。ex3data1.mat中的數(shù)據(jù)部分信息如下圖所示:
    吳恩達機器學習第三周------(2)神經(jīng)網(wǎng)絡向前傳播算法識別手寫數(shù)字(Python實現(xiàn))_第1張圖片
  • ex3weights.mat 中是已經(jīng)幫我們訓練好的參數(shù)theta1和theta2,ex3weights.mat中的數(shù)據(jù)部分信息如下圖所示:
    吳恩達機器學習第三周------(2)神經(jīng)網(wǎng)絡向前傳播算法識別手寫數(shù)字(Python實現(xiàn))_第2張圖片

模型表示

使用神經(jīng)網(wǎng)絡的第一件事,就是建立神經(jīng)網(wǎng)絡模型,即確定神經(jīng)網(wǎng)絡的層數(shù)以及每層神經(jīng)單元的數(shù)量。神經(jīng)網(wǎng)絡模型由三層構成:輸入層,隱藏層,輸出層。通常輸入層的神經(jīng)單元數(shù)即我們訓練集的特征數(shù)量,而輸出層的神經(jīng)單元數(shù)即我們訓練集結(jié)果的類的數(shù)量。我們真正要確定的是隱藏層的層數(shù)和每個中間層的單元數(shù),而一個合理的默認選項:只使用單個隱藏層。如果隱藏層數(shù)大于1,應盡量確保每個隱藏層的神經(jīng)單元個數(shù)相同,通常情況下隱藏層神經(jīng)單元的個數(shù)越多越好,即使大量的神經(jīng)單元會導致計算量大的問題。一般來說,每個隱藏層所包含的神經(jīng)單元數(shù)量還應當和輸入X的緯度即特征的數(shù)量相匹配或呈現(xiàn)倍數(shù)關系。

由于我們的輸入是數(shù)字圖像的像素值,并且像素的圖像尺寸為20像素*20像素,因此我們應設置400個輸入層神經(jīng)單元(不包括額外的偏置神經(jīng)元),設置10個輸出層神經(jīng)單元,對應10個數(shù)字類,至于隱藏層,規(guī)定設置隱藏層的層數(shù)為一層,隱藏層的神經(jīng)單元數(shù)量為25個。

  • 輸入層:400個神經(jīng)單元
  • 隱藏層:25個神經(jīng)單元
  • 輸出層:10個神經(jīng)單元

神經(jīng)挖網(wǎng)絡模型圖如下圖所示:
吳恩達機器學習第三周------(2)神經(jīng)網(wǎng)絡向前傳播算法識別手寫數(shù)字(Python實現(xiàn))_第3張圖片

實現(xiàn)過程

            
              import numpy as np
import scipy.io as sio
# 導入 ex3data1.mat 文件數(shù)據(jù)
data = sio.loadmat('ex3data1.mat')
raw_X = data['X']
raw_y = data['y']

            
          

為 raw_X 前插入一列值為1的數(shù) ,賦值給 X

            
              X = np.insert(raw_X,0,values=1,axis=1)
X.shape
# (5000, 401)

            
          
            
              y = raw_y.flatten()
y.shape
# (5000,)

            
          
            
              # 導入 ex3weights.mat 文件數(shù)據(jù)
theta = sio.loadmat('ex3weights.mat')
theta.keys()
# dict_keys(['__header__', '__version__', '__globals__', 'Theta1', 'Theta2'])

            
          

獲取到已經(jīng)訓練好的參數(shù)theta1和theta2

            
              theta1 = theta['Theta1']
theta2 = theta['Theta2']
theta1.shape,theta2.shape
# ((25, 401), (10, 26))

            
          

定義sigmoid函數(shù)

            
              def sigmoid(z):
    return 1/ (1 + np.exp(-z))

            
          

向前傳播

            
              a1 = X 
z2 = X @theta1.T
a2 = sigmoid(z2)
a2.shape
# (5000, 25)
a2 = np.insert(a2,0,values=1,axis=1)
a2.shape
# (5000, 26)
z3 = a2 @ theta2.T
a3 = sigmoid(z3)
a3.shape
# (5000, 10)

            
          
            
              y_pred = np.argmax(a3,axis=1)
y_pred = y_pred + 1
acc =  np.mean(y_pred == y)
acc
# 0.9752

            
          
            
              a3
# array([[1.12661530e-04, 1.74127856e-03, 2.52696959e-03, ...,
        4.01468105e-04, 6.48072305e-03, 9.95734012e-01],
       [4.79026796e-04, 2.41495958e-03, 3.44755685e-03, ...,
        2.39107046e-03, 1.97025086e-03, 9.95696931e-01],
       [8.85702310e-05, 3.24266731e-03, 2.55419797e-02, ...,
        6.22892325e-02, 5.49803551e-03, 9.28008397e-01],
       ...,
       [5.17641791e-02, 3.81715020e-03, 2.96297510e-02, ...,
        2.15667361e-03, 6.49826950e-01, 2.42384687e-05],
       [8.30631310e-04, 6.22003774e-04, 3.14518512e-04, ...,
        1.19366192e-02, 9.71410499e-01, 2.06173648e-04],
       [4.81465717e-05, 4.58821829e-04, 2.15146201e-05, ...,
        5.73434571e-03, 6.96288990e-01, 8.18576980e-02]])

            
          

更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产欧美在线观看 | 午夜性色福利视频在线视频 | 伊人久久综合视频 | 国内精品久久久久久久aa护士 | 神马影院我不卡手机版 | 亚洲欧美日韩精品中文乱码 | 伊人久久影视 | 中文字幕在线视频不卡 | 人人干操 | 国产乱人伦偷精品视频不卡 | 四虎成人欧美精品在永久在线 | 久久这里精品青草免费 | 亚洲人成影院午夜网站 | 国产精品400部自产在线观看 | 91视频看 | 一本久道综合久久精品 | 欧美视频在线观在线看 | 午夜精品aaa国产福利 | 欧美精品v国产精品v | 狠狠色狠狠色很很综合很久久 | 成人一区二区免费中文字幕 | 国产野花视频天堂视频免费 | 亚洲国产一区二区三区a毛片 | 四虎永久免费 | 国产欧美精品国产国产专区 | 久草91| 日韩色吧| 中文字幕亚洲 综合久久 | 奇米888第四色 | 欧美亚洲国产精品久久久 | 亚洲综合图 | 欧美一级免费观看 | 欧美jizzhd极品欧美 | 久久亚洲精品永久网站 | 露脸超嫩97后在线播放 | 欧美在线不卡 | 最近免费中文字幕大全免费版视频 | 何以笙箫默在线观看 | 韩日性视频 | 国产一区二区在线免费观看 | 日韩欧美一级毛片视频免费 |