計算CNN卷積神經(jīng)網(wǎng)絡(luò)中各層的參數(shù)數(shù)量「附代碼」

image

每個對機器學習感興趣的機器學習工程師/軟件開發(fā)人員/學生都在卷積神經(jīng)網(wǎng)絡(luò)(也稱為CNN)上工作。我們有一個一般理論,即如何訓練網(wǎng)絡(luò)對圖像進行分類。但是,剛接觸機器學習/神經(jīng)網(wǎng)絡(luò)的人們并不了解CNN如何精確地學習參數(shù)。

我們知道,在每個轉(zhuǎn)換層中,網(wǎng)絡(luò)都試圖了解基本模式。例如:在第一層中,網(wǎng)絡(luò)嘗試學習圖案和邊緣。在第二層中,它嘗試了解形狀/顏色和其他內(nèi)容。最后一層稱為要素層/完全連接層嘗試對圖像進行分類。

在學習參數(shù)之前,我們需要了解卷積網(wǎng)絡(luò)中的一些基本概念,這對修改/重用源代碼非常有幫助。

CNN網(wǎng)絡(luò)中存在各種層。

輸入層:所有輸入層所做的都是讀取圖像。因此,這里沒有學習參數(shù)。

卷積層:考慮一個以“ l ”個特征圖為輸入并以“ k ”個特征圖為輸出的卷積層。過濾器尺寸為“ n * m ” 。

image

在此,輸入具有l(wèi) = 32個特征圖作為輸入,k = 64個特征圖作為輸出,并且過濾器大小為n = 3和m = 3。重要的是要理解,我們不只是擁有3 * 3過濾器,而是實際上擁有3 * 3 * 32過濾器,因為我們的輸入具有32個尺寸。作為第一轉(zhuǎn)換層的輸出,我們學習了64個不同的3 * 3 * 32濾波器,總權(quán)重為“ n * m * k * l ”。然后,每個特征圖都有一個稱為“偏差”的術(shù)語。因此,參數(shù)總數(shù)為“ (n * m * l + 1)* k ”.

池化層:池化層中沒有可以學習的參數(shù)。該層僅用于減小圖像尺寸。

完全連接層:在此層中,所有輸入單元對每個輸出單元都具有可分離的權(quán)重。對于“ n ”個輸入和“ m ”個輸出,權(quán)數(shù)為“ n * m ”。另外,該層對于每個輸出節(jié)點都有偏差,因此“ (n + 1)* m ”個參數(shù)。

輸出層:此層是完全連接的層,因此當“ n ”是輸入數(shù)而“ m ”是輸出數(shù)時,參數(shù)(n + 1)m。

CNN層的最后一個困難是第一個完全連接的層。我們不知道完全連接層的尺寸,因為它是卷積層。要計算它,我們必須從輸入圖像的大小開始,并計算每個卷積層的大小。

在簡單的情況下,輸出CNN層的大小被計算為“ input_size-(filter_size-1) ”。例如,如果輸入image_size為(50,50)且filter為(3,3),則(50-(3-1))= 48。但是卷積網(wǎng)絡(luò)的輸入圖像的大小不應(yīng)小于輸入的大小,因此可以進行填充。

因此可以進行填充。
要計算填充,請輸入input_size + 2 * padding_size-(filter_size-1)。對于上述情況,(50+(2 * 1)-(3-1)= 52–2 = 50)給出相同的輸入大小。
如果我們想明確地想在卷積過程中對圖像進行下采樣,則可以定義一個跨度。
最后,要計算網(wǎng)絡(luò)學習的參數(shù)數(shù)量(n * m * k + 1)* f.

讓我們在給定的代碼中看到這一點。

import keras
image

input_1(輸入層)的形狀為(None,96,96,1),參數(shù)為0。在整個程序中,stride = 1,kernel_size = 2 * 2,padding = same。

卷積_1:(((kernel_size)* stride + 1)* filters)= 3 * 3 * 1 + 1 * 32 = 320個參數(shù)。在第一層中,卷積層具有32個濾鏡。

Dropout_1:Dropout層不執(zhí)行任何操作。它只是刪除低于所述權(quán)重的節(jié)點。

Convolutional_2:由于convolutional_1已經(jīng)學習了32個過濾器。所以數(shù)量該層中的可訓練參數(shù)為3 * 3 * 32 + 1 * 32 = 9248,依此類推。

Max_pooling_2d:此層用于減小輸入圖像的大小。kernal_size =(2,2)在這里使用。因此輸入圖像96減少到一半48。模型從這一層學不到任何東西。

Convolutional_3: 3 * 3 * 32 + 1 * 64 = 18496,依此類推。

最后,所有的參數(shù)總結(jié)在一起。

總訓練參數(shù)= 7,759,521可訓練參數(shù)= 7,759,251非訓練參數(shù)= 0。

image

Have a great day..!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容