關於理解卷積操作中Padding的兩種方式

2021-08-20 04:37:16 字數 1234 閱讀 4020

參考部落格

卷積操作存在兩個問題:

1、影象越來越小;

2、影象邊界資訊丟失,即有些影象角落和邊界的資訊發揮作用較少。

因此需要padding

一張mxm的,經過卷積核fxf,strides = [1,1,1,1], padding =valid卷積操作後,

得到大小為 c_side x c_side 的 feature map,

其中,c_side = m - ( f - 1 ),即邊長減少了 f-1個單位

若想保持卷積後的影象大小不變,需要在原圖邊長基礎上padding f-1個單位的零元素,

即經過 strides = [1,1,1,1], padding =same卷積操作後,

c_side = ( m +2p)- ( f - 1 ) = m

p = ( f - 1 )/ 2

一般的,卷積核邊長大小f為奇數

1、方便padding = same卷積操作,左右(上下)兩邊對稱補零;

2、奇數卷積核有中心畫素,便於確定卷積核的位置。

當卷積步長strides不為1時,邊長計算公式如下:

for the same padding, the output height andwidth are computed as:

out_height = ceil(float(in_height) / float(strides[1]))

out_width = ceil(float(in_width) / float(strides[2]))

and

for the valid padding, the output height andwidth are computed as:

out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))

out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))

深入理解卷積網路中的 「卷積」

你可以把卷積想象成一種混合資訊的手段。想象一下裝滿資訊的兩個桶,我們把它們倒入乙個桶中並且通過某種規則攪拌攪拌。也就是說卷積是一種混合兩種資訊的流程 卷積過程是基於乙個小矩陣,也就是卷積核,在上面所說的每層畫素矩陣上不斷按步長掃過去的,掃到數與卷積核對應位置的數相乘,然後求總和,每掃一次,得到乙個值...

關於卷積核為何有效的初級理解

傳統的神經網路mlp和其他的淺層演算法如svm等,是把一張影象先拉直再輸入,後續也都處於一維的狀態。而一張rgb影象共有9個維度的資訊,分別是rgb值和對應的位置 r g b xr yr xg yg xb yb。mlp丟失了其中絕大部分的位置資訊,在僅有的rgb值3個維度的資訊去解決9個維度的問題,...

pytorch中的卷積操作詳解

首先說下pytorch中的tensor通道排列順序是 batch,channel,height,width 我們常用的卷積 conv2d 在pytorch中對應的函式是 torch.nn.conv2d in channels,out channels,kernel size,stride 1,pad...