TensorFlow學習 卷積層conv2d引數

2021-08-20 20:26:46 字數 2568 閱讀 5906

卷積層引數解釋

tf.nn.conv2d(input,filter, strides, padding, use_cudnn_on_gpu=bool, data_format

,name=none)

input

指定需要做卷積的輸入影象,輸入要求為乙個4維的

tensor

,要求輸入型別為

float32

或者float64

。輸入的

shape

為[batch, in_height, in_width, in_channels]

,分別表示:訓練時乙個

batch

的數量,的高度,的寬度,的通道數

filter

卷積核,輸入要求為乙個4維的

tensor

,輸入的

shape

為[filter_height,filter_width, in_channels, out_channels]

,分別表示:卷積核的高度,卷積核的寬度,影象通道數,卷積核個數

strides

決定卷積的視窗在影象上每乙個維度上的步長,為一維向量,要求輸入型別為

int,其中典型的設定為

strides[0]=strides[3]=1

(在data_format

為預設值時,如果

data_format

有改變需要根據

data_format

的順序決定

strides

的向量的順序)

strides[0]

表示batch

,strides[3]

表示卷積核的深度,因為需要遍歷資料中所有的

batch

,所以設定為1當

strides[0]=strides[3]=-1

時,表示讓**自動根據輸入的

batch size

來調整,這樣設定的好處是不需要人手動調整引數

例如:乙個灰度影象為

32*32

大小,則輸入矩陣為

00 01 02 03 04 ...

10 11 12 13 14 ...

20 21 22 23 24 ...

3031 32 33 34 ..

假設卷積視窗的步長在每乙個維度上都為1,即

strides= [1,1,1,1]

,並且padding=」same」

那麼輸出為:

f(00 01

10 11)

接著f(01 02

11 12)……

接著第二行

f(10, 11

20, 21) ……

如果卷積視窗的步長在每乙個維度上都為2,即

strides= [1,2,2,1]

,並且padding=」same」

那麼輸出為

f(00, 01

10, 11)

接著f(02, 03

padding

可選「

same

」和「valid

」,決定不同的卷積方式

same

:採用補全的方式,補

0 , valid:採用丟棄方式

假設輸入矩陣為

w*w,卷積核為

f*f,步長為

s輸出為

new_w

經過valid

的方式卷積:

new_w = (w-f+1) / s 

結果向上取整

經過same

的方式卷積:

new_w = w / s  

結果向上取整

則需要pad

的畫素數為:

need_padding_pixel = (new_w – 1) * s + f –w

於是在矩陣

w*w的左邊或者上方新增畫素為:

new_padding_left = new_padding_top = need_padding_pixel/ 2    

結果向上取整

use_cudnn_on_gpu=bool

是否使用

cudnn

加速,預設為

true

data_format

可選

"nhwc","nchw"

,預設為

"nhwc"

。指定輸入和輸出資料的格式,預設值表示

data

將被儲存為

[batch, height, width, channels]

的順序。

"nchw"

表示data

將被儲存為

[batch,channels, height, width]

的順序。

結果返回乙個

tensor

,即feature map

參考文件:

tensorflow 1 0 學習 卷積層

在tf1.0中,對卷積層重新進行了封裝,比原來版本的卷積層有了很大的簡化。一 舊版本 1.0以下 的卷積函式 tf.nn.conv2d conv2d input,filter,strides,padding,use cudnn on gpu none,data format none,name no...

Tensorflow2 0之卷積層實現

在 tensorflow 中,通過tf.nn.conv2d 函式可以方便地實現2d 卷積運算。tf.nn.conv2d基於輸入?和卷積核?進行卷積運算,得到輸出?其中?表示輸入通道數,表示卷積核的數量,也是輸出特徵圖的通道數。例如 in 1 x tf.random.normal 2 5,5 3 模擬...

TensorFlow實戰系列11 卷積層網路結構

圖 4 中顯示了卷積層神經網路結構中最重要的部分,這個部分被稱之為過濾器 filter 或者核心 kernel 因為 tensorflow 文件中將這個結構稱之為過濾器 filter 所以我們將統稱這個結構為過濾器。如圖 4 所示,過濾器可以將當前層神經網路上的乙個子節點 矩陣轉化為下一層神經網路上...