卷積神經(jīng)網(wǎng)絡(luò)各層的作用以及API的設(shè)計
?? ? ?對于很多小伙伴來說惠勒,每次接受一個新名稱都是一種進步與挑戰(zhàn)埋涧,而我認為學(xué)習是一個0與1的過程围肥,到達1也許需要經(jīng)歷千辛萬苦戏羽,但是當你到達1后,這種喜悅會讓你認為過程的艱苦是值得的狱掂。這篇文章主要是對卷積神經(jīng)網(wǎng)絡(luò)中重要的四個層面的介紹演痒,我也盡量會以最通俗的語言去進行介紹,希望您可以有收獲趋惨。
1嫡霞、神經(jīng)網(wǎng)絡(luò)的層次結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)包括三大層:輸入層,隱藏層希柿,輸出層。
其中最為重要的是隱藏層养筒,它包括四大部分:
卷積層
激勵層
池化層
全連接層
接下來我將對這四層進行講解
2曾撤、卷積層
2.1? 卷積層的作用
通過卷積核在原始圖像上平移來提取特征。就好比人觀察圖片晕粪,通過上下掃描圖片挤悉,提取想要的信息。
2.2? ?卷積層相關(guān)概念的介紹
我們先來了解幾個概念:圖片大小巫湘,卷積核大小装悲,偏置項,步長尚氛,零填充
圖片大小 [ 長*寬*通道數(shù) ]:圖片分為黑白圖片和彩色圖片诀诊。
對于黑白圖片它的大小 = 長 * 寬 *1 (通道數(shù)為1)
對與RGB彩色圖片的大小 = 長 * 寬 * 3(通道數(shù)為3)
卷積核的大小:我們一般習慣用1 * 1? ? ?3 * 3? ? 5 * 5像素阅嘶,作為我們的卷積核属瓣,卷積核也可以理解為人工神經(jīng)網(wǎng)絡(luò)中的權(quán)重大小载迄。(卷積核一般隨機生成,包含[0,1,-1]的矩陣)
偏置項:因為在進行圖像線性處理的抡蛙,需要對圖像進分割护昧,偏置項的作用使分割的線性圖像可以不過原點。偏置項的作用
步長:卷積核需要對圖像像素進行計算粗截,每次計算后所需要移動的像素大小惋耙。
零填充,因為卷積核按照相應(yīng)步長移動熊昌,卷積核可能會超出圖片的范圍绽榛,因此可以在圖片外圍進行零填充,保證每一個卷積核都有相應(yīng)的值與之計算浴捆。
2.3 卷積層輸出圖片的生成
上圖給出的是單通道如何生成輸出圖像?
輸入圖片大小為5 * 5 * 1
卷積核大小為3 * 3
步長為1
偏置項為0
無零填充
得到的生成的輸出圖像大小為3 * 3 * 1
可以看出來輸入圖像與卷積核的計算是一一對應(yīng)的關(guān)系蒜田。
上面張圖片展示的是三通道輸入圖像如何生成輸出圖像
輸入圖片大小為5 * 5 * 1
卷積核大小為3 * 3
步長為2
偏置項為1
有零填充,大小為1
這里的藍色矩陣輸入的圖像选泻,粉色矩陣就是卷積核冲粤。這里表示了有兩個神經(jīng)元(w0,w1)。綠色矩陣就是經(jīng)過卷積運算后的輸出矩陣页眯。
下面給出動態(tài)圖
2.4 生成圖片大小的計算
輸入體積大小為H1*W1*D1
四個超參數(shù):
卷積核的數(shù)量K
卷積核大小F(F表示卷積核的邊長)
步長S
零填充大小P
輸出體積大小H2*W2*D2
H2=(H1-F+2P)/S+1
W2=(W1-F+2P)/S+1
D2=K
給出一道面試例題
(*可以考慮計算驗證一下2.3中三通道圖像梯捕,輸入圖片大小為5*5*3,卷積核為3*3窝撵,卷積核的數(shù)量為2傀顾,生成圖片大小為3*3*3)
2.5 卷積層API的設(shè)計
?tf.nn.conv2d(input,fliter,strides=,padding=,name=None)
各個參數(shù)的介紹
input:? ? ? ? ? ? ? ? #輸入圖片大小
要求形狀[batch,height,width,channel] #(長寬高,和圖片數(shù))
類型為float32碌奉,64????
filter:? ? ? ? ? ? ? ? ? #卷積核數(shù)目
weigths #(權(quán)重)(核大小)
變量initial_value=random_normal(shape=[F,F,3(RGB圖片)或1(黑白圖片)短曾,K])
(字母的意思參考2.4中給定字母的介紹)
strides:????????????????????#步長
[1,strides,strides,1]
padding:’SAME’? ? ? #零填充大小
“SAME”:越過邊緣取樣
“VALID”:不越過邊緣取樣
3、激活層
3.1 激活層的作用
激活層最重要的便是激活函數(shù)赐劣,它的主要作用是加入非線性因素的嫉拐,將特征映射到高維的非線性區(qū)間進行解釋,解決線性模型所不能解決的問題魁兼。
?3.2 激活函數(shù)
首先我們先了解兩個激活函數(shù):sigmoid 函數(shù)和 ReLU 函數(shù)婉徘。
sigmoid函數(shù)我們在人工神經(jīng)網(wǎng)絡(luò)中我們將他作為閾值函數(shù),將變量映射到0和1之間
sigmoid的函數(shù)表達式為?
圖像為
因為卷積神經(jīng)網(wǎng)絡(luò)需要進行大量的像素提取計算咐汞,而sigmoid求導(dǎo)后盖呼,結(jié)果復(fù)雜,計算量也相當?shù)拇蠡骸M瑫r隨著圖形的增長梯度會逐漸消失几晤,并且輸入的范圍大致為[-6,6]。因此我們引入新的激活函數(shù) ReLU 函數(shù)
ReLU函數(shù)的表達式和圖形如下
ReLU函數(shù)的優(yōu)點主要有三點
1植阴、計算速度快
2锌仅、解決了梯度消失
3章钾、圖象沒有負像素
有了激活函數(shù),我們就來看下API 的設(shè)計
3.3 激活層API的設(shè)計
卷積層的API利用tensorflow非常簡單
tf.nn.relu(features)
各參數(shù)的介紹
features? ? ? ? ? ? #卷積后的偏置結(jié)果
4热芹、池化層? ? ? ? ? ??
4.1 池化層的作用
池化層主要是利用圖形各像素之間的聯(lián)系贱傀,壓縮數(shù)據(jù)和參數(shù)的量,減少過擬合伊脓。池化層所做的工作簡言之就是將圖片壓縮府寒。
這里再展開敘述池化層的具體作用。
1. 特征不變性报腔,也就是我們在圖像處理中經(jīng)常提到的特征的尺度不變性株搔,池化操作就是圖像的resize,平時一張狗的圖像被縮小了一倍我們還能認出這是一張狗的照片纯蛾,這說明這張圖像中仍保留著狗最重要的特征纤房,我們一看就能判斷圖像中畫的是一只狗,圖像壓縮時去掉的信息只是一些無關(guān)緊要的信息翻诉,而留下的信息則是具有尺度不變性的特征炮姨,是最能表達圖像的特征。
2. 特征降維碰煌,我們知道一幅圖像含有的信息是很大的舒岸,特征也很多,但是有些信息對于我們做圖像任務(wù)時沒有太多用途或者有重復(fù)芦圾,我們可以把這類冗余信息去除蛾派,把最重要的特征抽取出來,這也是池化操作的一大作用个少。
3. 在一定程度上防止過擬合洪乍,更方便優(yōu)化。
池化方法一般包括:最大池化和平均池化夜焦,而最為普遍的是最大池化壳澳。找到池化窗口中最大的數(shù)作為輸出值。
4.2 池化層API的設(shè)計
tf.nn.max_pool(value,ksize=,strides=,padding)
各參數(shù)的介紹
value:4-D Tensor形狀(batch,height,width,channels)
channel:卷積核的數(shù)量
ksize:池化窗口[1,ksize,ksize,1]
strides:步長大小[1,strides,strides,1]
padding:”SAME”,”VALID”????
4.3 池化層的面試題
(參考卷積層的計算)
5糊探、全連接層
前面的卷積和池化相當于在做特征工程,最后的全連接層起到了“分類器”的作用河闰。? ? ? ??
由于能力有限科平,參考網(wǎng)上一些博客和視頻,根據(jù)自己的理解和學(xué)習進行的編寫姜性,這篇文章有助于大家理解卷積神經(jīng)網(wǎng)絡(luò)四大層次瞪慧。同時后面提供的嗶哩嗶哩鏈接,有助于深度學(xué)習的初學(xué)者進行學(xué)習部念。最后感激您的閱讀弃酌,有問題也希望您能夠指出氨菇,我們一同進步。
參考文獻: