CNN卷積函數(shù)Conv2D()各參數(shù)的含義及用法解讀
首先我們放出tf2.0關(guān)于tf.keras.layers.Conv2D()函數(shù)的官方文檔,然后逐一對(duì)每個(gè)參數(shù)的含義和用法進(jìn)行解釋?zhuān)?/p>
tf.keras.layers.Conv2D( filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, **kwargs )
從這個(gè)函數(shù)的定義能看出來(lái),filters ,kernel_size過(guò)濾器個(gè)數(shù)和卷積核尺寸,這是兩個(gè)位置參數(shù),沒(méi)有默認(rèn)值,必須給。
后面的那個(gè)多參數(shù),都是關(guān)鍵字參數(shù)(有等于號(hào)的),都是有默認(rèn)值的,可以不寫(xiě),下面來(lái)逐一分析每個(gè)參數(shù)的含義:
1.函數(shù)的位置參數(shù)filters
這是第一個(gè)參數(shù),位置是固定的,含義是過(guò)濾器個(gè)數(shù),或者叫卷積核個(gè)數(shù),這個(gè)與卷積后的輸出通道數(shù)一樣,比如下面filters為5的時(shí)候,卷積輸出的通道數(shù)(最后一位)就是5
filters卷積核個(gè)數(shù)為8的時(shí)候,輸出的通道數(shù)就是8
2.函數(shù)的第二個(gè)位置參數(shù) kernel_size
卷積核尺寸,一般為3×3,或者5×5,此處用2個(gè)整數(shù)的元組或列表表示,比如(3,3),[5,5],如果height, width長(zhǎng)寬一樣,直接用一個(gè)整數(shù)表示就行,比如3或者5,卷積后的,卷積后的height,width的計(jì)算公式如下:滑動(dòng)步長(zhǎng)為strides,卷積核的尺寸為S,輸入的尺寸為P,padding = ‘valid“
height =width = (P-S)/strides +1,
此處 輸入形狀為20×20,卷積核為3×3,滑動(dòng)步長(zhǎng)為1,所以輸出為(20-3)/1 +1 =18
此處,輸入為20×20,卷積核為5×5,滑動(dòng)步長(zhǎng)為2×2,所以輸出的形狀為,(20-5)/2 +1向下取整,等于8,
3.關(guān)鍵字參數(shù)strides=(1, 1),滑動(dòng)步長(zhǎng)
默認(rèn)橫向和縱向滑動(dòng)均為1,這個(gè)與上面的 卷積核size配合使用,用來(lái)計(jì)算輸出的形狀,
height =width = (P-S)/strides +1,
4.關(guān)鍵字參數(shù)padding = “valid”
默認(rèn)是邊緣不填充
此處只有兩個(gè)取值,另一個(gè)取值為 “same”,表示邊緣用0填充,如果padding =“same”,則輸出的形狀為 height =width = P/strides ,向上取整,如下圖,
5.關(guān)鍵字參數(shù) data_format = ’ channels_first’
輸入的數(shù)據(jù)格式
此處只有兩個(gè)取值 ,“channels_first”,和“channels_last”,即輸入的數(shù)據(jù)格式中,通道數(shù)是第一個(gè)還是最后一個(gè),默認(rèn)為“channels_last”,即默認(rèn)輸入數(shù)據(jù)的格式中,通道數(shù)為最后一個(gè)。
當(dāng)data_format = "channels_first"的時(shí)候,輸入和輸出的shape格式為
(batch_size, channels, height, width)即(圖片數(shù)量,通道數(shù),長(zhǎng),寬)正如下圖所示:
6.關(guān)鍵字參數(shù)dalition_rate = (1,1)
這個(gè)含義是卷積核的膨脹系數(shù),
此處的作用是將卷積核進(jìn)行形狀膨脹,新的位置用0填充,新卷積核的尺寸和膨脹系數(shù)的計(jì)算公式如下:
原卷積核的尺寸為S ,膨脹系數(shù)為k,則膨脹后的卷積核尺寸為
size = k×(S-1)+1
7.關(guān)鍵字參數(shù)activation = “relu”
此處的含義是激活函數(shù),
相當(dāng)于經(jīng)過(guò)卷積輸出后,在經(jīng)過(guò)一次激活函數(shù),常見(jiàn)的激活函數(shù)有relu,softmax,selu,等
8.關(guān)鍵字參數(shù)use_bias =0 、1
偏置項(xiàng)
此處取值為布爾值,0或者1,0表示沒(méi)有增加bias,1表示有。
9.后面的關(guān)鍵字參數(shù)一般不常用
kernel_initializer
:卷積核初始化,bias_initializer
:偏差值初始化,kernel_regularizer
:卷積核正則化bias_regularizer
:偏差正則化activity_regularizer
:這個(gè)地方也是一個(gè)正則化kernel_constraint
:卷積核約束bias_constraint
:偏差約束。
這幾個(gè)參數(shù)不常用,
10.最后還有幾個(gè)可選 的關(guān)鍵字參數(shù)
input_shape
這個(gè)是指輸入的形狀,一般是4D的,(batch size, height, width, channels),也可以不定義,那就是默認(rèn)輸入的形狀。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于生產(chǎn)消費(fèi)者模型中task_done()的具體作用
這篇文章主要介紹了關(guān)于生產(chǎn)消費(fèi)者模型中task_done()的具體作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02基于Python?+?PyQt搭建可視化頁(yè)面的詳細(xì)教程
PyQt是一個(gè)Python綁定庫(kù),它是基于Qt庫(kù)的,PyQt提供了一整套豐富的組件,包括窗口、按鈕、菜單、列表框等,以及事件處理、布局管理、網(wǎng)絡(luò)通信等多種功能,本文介紹了基于Python?+?PyQt搭建可視化頁(yè)面的詳細(xì)教程,需要的朋友可以參考下2024-07-07python+pygame簡(jiǎn)單畫(huà)板實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了python+pygame簡(jiǎn)單畫(huà)板實(shí)現(xiàn)代碼實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12Python實(shí)現(xiàn)九宮格式的朋友圈功能內(nèi)附“馬云”朋友圈
PIL(Python Imaging Library)是一個(gè)非常強(qiáng)大的Python庫(kù),但是它支持Python2.X, 在Python3中則使用的是Pillow庫(kù),它是從PIL中fork出來(lái)的一個(gè)分支。這篇文章主要介紹了用Python搞定九宮格式的朋友圈功能內(nèi)附“馬云”朋友圈 ,需要的朋友可以參考下2019-05-05OpenCV-Python實(shí)現(xiàn)輪廓檢測(cè)實(shí)例分析
這篇文章主要介紹了OpenCV-Python實(shí)現(xiàn)輪廓檢測(cè)實(shí)例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01