乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

       山峰云繞 2019-02-25

      https://www.toutiao.com/a6661824379845870088/



      點擊上方關(guān)注,All in AI中國
      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      目錄

      • 什么是CNN?
      • 我們?yōu)槭裁匆褂肅NN?
      • 幾個定義
      • CNN中的圖層
      • Keras實現(xiàn)

      1.什么是CNN?

      計算機視覺日新月異的其中一個原因是深度學(xué)習(xí)。當(dāng)我們談?wù)撚嬎銠C視覺時,我們會想到一個術(shù)語,卷積神經(jīng)網(wǎng)絡(luò)(縮寫為CNN),因為CNN會在這一領(lǐng)域被大量使用。計算機視覺中CNN的例子是人臉識別、圖像分類等。它類似于基本的神經(jīng)網(wǎng)絡(luò)。 CNN還有可學(xué)習(xí)的參數(shù),如神經(jīng)網(wǎng)絡(luò),即權(quán)重、偏差等。

      2.我們?yōu)槭裁匆褂肅NN?

      前饋神經(jīng)網(wǎng)絡(luò)問題

      假設(shè)您正在使用MNIST數(shù)據(jù)集,您知道MNIST中的每個圖像都是28 x 28 x 1(黑白圖像只包含1個通道)。輸入層中的神經(jīng)元總數(shù)將為28 x 28 = 784,這是可以管理的。如果圖像的大小是1000 x 1000,這意味著你在輸入層需要10?個神經(jīng)元。這似乎是在操作中需要大量神經(jīng)元。它在計算上無效,這就是卷積神經(jīng)網(wǎng)絡(luò)。簡單來說,CNN所做的就是提取圖像的特征并將其轉(zhuǎn)換為較低的維度的圖像,而不會失去其特征。在下面的例子中,你可以看到初始圖像的大小是224 x 224 x 3,如果你不繼續(xù)卷積,那么你需要224 x 224 x 3 = 100,352個輸入層的神經(jīng)元數(shù)量,但是在應(yīng)用卷積后,你輸入張量維數(shù)減少到1 x 1 x 1000。這意味著你只需要第一層前饋神經(jīng)網(wǎng)絡(luò)中的1000個神經(jīng)元。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      3.幾個定義

      在理解CNN之前,您應(yīng)該了解的定義很少

      3.1圖像表示

      考慮到圖像,很容易理解它有高度和寬度,因此用二維結(jié)構(gòu)(矩陣)表示包含在其中的信息是有意義的,直到你記住圖像有顏色,并添加有關(guān)圖像的信息顏色,那就是當(dāng)張量變得特別有用時,我們需要另一個維度。

      圖像被編碼成顏色通道,圖像數(shù)據(jù)在給定點的顏色通道中表示為每種顏色強度,最常見的是RGB,這意味著紅色、藍色和綠色。圖像中包含的信息是每個通道顏色的強度轉(zhuǎn)換成圖像的寬度和高度,就像這樣

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      因此,具有寬度和高度的每個點處的紅色通道的強度可以表示為矩陣,對于藍色和綠色通道也是如此,因此我們最終具有三個矩陣,并且當(dāng)它們組合時,它們形成 tensor。

      3.2邊緣檢測

      每個圖像都有垂直和水平邊緣,實際上組合形成一個圖像。卷積操作與一些濾波器一起用于檢測邊緣。假設(shè)您有尺寸為6 x 6的灰度圖像和尺寸為3 x 3的濾鏡(比方說)。當(dāng)6 x 6灰度圖像與3 x 3濾波器卷積時,我們得到4 x 4圖像。首先,3 x 3濾鏡矩陣乘以我們的灰度圖像的前3 x 3尺寸,然后我們將一列向右移動到結(jié)束,之后我們移動一行,依此類推。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      卷積操作

      卷積操作可以通過以下方式可視化。這里我們的圖像尺寸是4 x 4,濾鏡是3 x 3,因此我們在卷積為2 x 2后得到輸出。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      卷積的可視化

      如果我們有N x N圖像大小和F x F濾波器大小,那么在卷積結(jié)果之后

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      3.3步幅和填充

      Stride表示我們在卷積的每一步驟中移動了多少步。默認情況下它是1。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      與Stride 1的卷積

      我們可以觀察到輸出的大小小于輸入的大小。為了保持輸出的維度,我們使用填充。填充是對稱地將0添加到輸入矩陣的過程。在以下示例中,額外的灰色塊表示填充。它用于使輸出的維度與輸入相同。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      假設(shè)'p'是填充

      最初(沒有填充)

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      應(yīng)用填充后

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      應(yīng)用填充后

      如果我們在帶有填充的(N + 2p)x(N + 2p)輸入矩陣中應(yīng)用濾波器F x F,那么我們將得到輸出矩陣維數(shù)(N + 2p-F + 1)x(N + 2p-F + 1) 。我們知道在應(yīng)用填充后,我們將獲得與原始輸入維度(N x N)相同的維度。因此我們有,

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      等式(3)清楚地表明Padding取決于濾波器的尺寸。

      4.在CNN中的圖層

      CNN中有五個不同的層:

      • 輸入層
      • Convo層(Convo + ReLU)
      • 匯集層
      • 完全連接(FC)層
      • Softmax / logistic層
      • 輸出層
      • 不同層次的CNN
      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      4.1輸入層

      CNN中的輸入層應(yīng)包含圖像數(shù)據(jù)。如前所述,圖像數(shù)據(jù)由三維矩陣表示。您需要將其重塑為單個列。假設(shè)您有尺寸為28 x 28 = 784的圖像,則需要在輸入輸入之前將其轉(zhuǎn)換為784 x 1。如果你有“m”訓(xùn)練樣例,那么輸入的維數(shù)將是(784,m)。

      4.2. Convo層

      Convo圖層有時稱為特征提取圖層,因為圖像的特征是在此圖層中提取的。首先,如前所述,圖像的一部分連接到Convo層以執(zhí)行卷積操作,并計算感受場之間的點積(它是輸入圖像的局部區(qū)域,具有與濾波器相同的大小)和過濾器。操作結(jié)果是輸出量的單個整數(shù)。然后我們將濾鏡移到相同輸入圖像的下一個接受域,再次執(zhí)行相同的操作。我們將一次又一次地重復(fù)相同的過程,直到我們完成整個圖像。輸出將是下一層的輸入。

      Convo層還包含ReLU激活,以使所有負值為零。

      4.3.池化層

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      池化層用于減少卷積后輸入圖像的空間體積。它用于兩個卷積層之間。如果我們在Convo層之后應(yīng)用FC而不應(yīng)用池或最大池,那么它在計算起來會比較昂貴,并且我們不想要它。因此,最大池化只是輸入圖像空間體積的唯一途徑。在上面的例子中,我們在單深度切片中應(yīng)用了max pooling, Stride為2。你可以看到4×4維的輸入被縮減為2×2維。

      池化層中沒有參數(shù),但它有兩個超參數(shù)——Filter(F)和Stride(S)。

      通常,如果我們有輸入尺寸W1 x H1 x D1,那么

      W2 =(W1-F)/ S + 1

      H2 =(H1-F)/ S + 1

      D2 = D1

      其中W2,H2和D2是輸出的寬度、高度和深度。

      4.4.完全連接層(FC)

      完全連接的層涉及權(quán)重、偏差和神經(jīng)元。它將一層中的神經(jīng)元連接到另一層中的神經(jīng)元。它用于通過訓(xùn)練對不同類別的圖像進行分類。

      4.5. Softmax / Logistic Layer

      Softmax或Logistic層是CNN的最后一層。它位于FC層的末尾。 Logistic用于二進制分類,softmax用于多分類。

      4.6.輸出層

      輸出層包含標(biāo)簽,該標(biāo)簽采用單熱編碼形式。

      現(xiàn)在你對CNN有了很好的理解。讓我們在Keras實施CNN。

      5.Keras實施

      我們將使用CIFAR-10數(shù)據(jù)集來構(gòu)建CNN圖像分類器。 CIFAR-10數(shù)據(jù)集有10個不同的標(biāo)簽

      • 飛機
      • 汽車
      • 鹿
      • 青蛙
      • 卡車

      它有50,000個訓(xùn)練數(shù)據(jù)和10,000個測試圖像數(shù)據(jù)。 CIFAR-10中的圖像尺寸為32 x 32 x 3.它帶有Keras庫。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      模型可視化

      如果您使用谷歌colaboratory,那么請確保您使用的是GPU。檢查GPU是否打開。請嘗試以下代碼。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      輸出:

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      首先,導(dǎo)入所有必需的模塊和庫。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      然后加載數(shù)據(jù)集并將其拆分為訓(xùn)練集和測試集。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      我們將輸出CIFAR-10中的訓(xùn)練樣本形狀、測試樣本形狀和課程總數(shù)。我們之前看到有10個班級。為了舉例,我們將從訓(xùn)練集和測試集中輸出兩個示例圖像。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      輸出:

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      找到輸入圖像的形狀,然后將其重塑為用于訓(xùn)練和測試集的輸入格式。之后,將所有數(shù)據(jù)類型更改為浮點數(shù)。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      通過將訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)除以255來將數(shù)據(jù)歸一化到0-1之間,然后使用to_catagorical()函數(shù)將所有標(biāo)簽轉(zhuǎn)換為單熱矢量。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      使用單熱編碼顯示類別標(biāo)簽的更改。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      輸出:

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      現(xiàn)在創(chuàng)建我們的模型,將加載Convo圖層,然后合并圖層。然后我們將連接密集(FC)層來預(yù)測類。輸入到第一個Convo層的輸入數(shù)據(jù),該Convo層的輸出用作下一個Convo層的輸入,依此類推。最后,數(shù)據(jù)被送到FC層,試圖預(yù)測正確的標(biāo)簽。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      初始化所有參數(shù)并使用rmsprops優(yōu)化器編譯我們的模型。有許多優(yōu)化器,例如adam、SGD、GradientDescent、Adagrad、Adadelta和Adamax,您可以隨意嘗試它。批量為256,有50個epoch。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      model.summary()用于查看模型中每個圖層中的所有參數(shù)和形狀。您可以觀察到總參數(shù)為276,138,總可訓(xùn)練參數(shù)為276,138。非訓(xùn)練參數(shù)為0。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      輸出:

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      在編譯我們的模型之后,我們將通過fit()方法訓(xùn)練我們的模型,然后對其進行評估。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      輸出:

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      經(jīng)過訓(xùn)練,我們得到了83.86%的準(zhǔn)確率和75.48%的驗證準(zhǔn)確性。這個結(jié)果還是不錯的。

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒
      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      結(jié)論:

      恭喜! 您通過了解Keras的基本概念,在Keras中構(gòu)建了卷積神經(jīng)網(wǎng)絡(luò)。 您可以通過更改其超參數(shù)來試驗它!

      詳解CNN卷積神經(jīng)網(wǎng)絡(luò)那點事兒

      編譯出品

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多