參考部落格
卷積操作存在兩個問題:
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...