Deep Learning 30 卷積理解

2022-05-08 18:45:08 字數 1652 閱讀 9453

1. 這篇文章以賈清揚的ppt說明了卷積的實質,更說明了卷積輸出影象大小應該為:

假設輸入影象尺寸為w,卷積核尺寸為f,步幅(stride)為s(卷積核移動的步幅),padding使用p(用於填充輸入影象的邊界,一般填充0),那麼經過該卷積層後輸出的影象尺寸為(w-f+2p)/s+1。

2.它寫出為什麼會用padding?卷積核大小該如何確定?stride該如何確定?

二. caffe的卷積原理

1.這篇文章把卷積的過程寫得非常形象化,用簡單的例子用明白了卷積過程在caffe寫**的時候是怎麼實現的。

2.它還寫了卷積後輸出影象大小n為:

n=[((image_h + 2*pad_h – kernel_h)/stride_h)+ 1]*[((image_w +2*pad_w – kernel_w)/stride_w) + 1]  (結果向上取整)

image_h:輸入影象的高度

image_w:輸入影象的寬度

pad_h:在輸入影象的高度方向兩邊各增加pad_h個單位長度(因為有兩邊,所以乘以2)

pad_w:在輸入影象的寬度方向兩邊各增加pad_w個單位長度(因為有兩邊,所以乘以2)

kernel_h:卷積核的高度

kernel_w:卷積核的寬度

stride_h:高度方向的滑動步長;

stride_w:寬度方向的滑動步長。

因此,n為輸出影象大小的長寬乘積,也是卷積核在輸入影象上滑動可擷取的最大特徵數。

k=k*k,表示利用卷積核大小的框在輸入影象上滑動所擷取的資料大小,與卷積核大小一樣大。

上面是一般情況下的計算,在tensorflow中根據padding時引數選擇不同,卷積輸出影象的計算方式也可能不同,見:

tensorflow中卷積的padding操作

3.池化大小的計算與卷積類似:

n=[((image_h + 2*pad_h – kernel_h)/stride_h)+ 1]*[((image_w +2*pad_w – kernel_w)/stride_w )+ 1]  (結果向上取整)

image_h:輸入影象的高度

image_w:輸入影象的寬度

pad_h:在輸入影象的高度方向兩邊各增加pad_h個單位長度(因為有兩邊,所以乘以2)

pad_w:在輸入影象的寬度方向兩邊各增加pad_w個單位長度(因為有兩邊,所以乘以2)

kernel_h:池化區域的高度

kernel_w:區域的寬度

stride_h:高度方向的滑動步長;

stride_w:寬度方向的滑動步長。

因此,n為輸出影象大小的長寬乘積,也是卷積核在輸入影象上滑動可擷取的最大特徵數。

三.卷積時引數的理解

卷積運算時總是有乙個引數需要選擇,matlab中是shape,python中是border_mode

關於shape選項的說明;

當shape=full時,返回全部二維卷積結果,即返回c的大小為(ma+mb-1)x(na+nb-1)

shape=same時,返回與a同樣大小的卷積中心部分

shape=valid時,不考慮邊界補零,即只要有邊界補出的零參與運算的都捨去,返回c的大小為(ma-mb+1)x(na-nb+1)

deeplearning系列(六)卷積神經網路

在上一節中實現了乙個簡單的深度神經網路模型,模型的輸入層和第乙個隱藏層包含神經元的數量分別是 28 28和200。神經元的數量相對較少,因此,採用了全連線的設計。然而,在實際視覺應用中,輸入通常是更大尺度的rgb影象,比如96 96 3,若在第乙個隱藏層中學習特徵的數量也是200的話,需要學習引數的...

1 1卷積詳解

可以看作對某個區域性的加權求和 它是對應區域性感知,它的原理是在觀察某個物體時我們既不能觀察每個畫素也不能一次觀察整體,而是先從區域性開始認識,這就對應了卷積。卷積核的大小一般有1x1,3x3和5x5的尺寸。卷積核的個數就對應輸出的通道數,這裡需要說明的是對於輸入的每個通道,輸出每個通道上的卷積核是...

1 卷積反向傳播

1.x 0,0 x n,c,h,w n表示樣本標號,一般是乙個batch乙個batch輸入的 0表示樣本標號為0 c 表示影象的channel 對於灰度圖來講有三個r g b h 表示影象的高 w 表示影象的寬 2.池化 mean forward 1 3 2 2 2 backward 2 0.5 0...