AI面試題之(反)卷積輸出尺寸計算

1 給我背住

【卷積計算公式】
output=input+2paddingkernelstride+1output=\frac{input+2*padding-kernel}{stride}+1

【反捲積計算公式】
output=stride(input1)+2paddingkernel+2output=stride*(input-1)+2*padding-kernel+2

【其實只用記住卷積的計算公式就行了,反捲積的可以從卷積中的推導出來】

2 爲什麼是這樣算

2.1 卷積

其實晚上很多都是僅僅告訴你,計算公式是:
output=input+2paddingkernelstride+1output=\frac{input+2*padding-kernel}{stride}+1
這裏簡單的來講解一下爲什麼。

input+2paddinginput+2*padding】這個就是原來的圖片,外面加了一圈padding,因爲padding是一圈,所以左右、上下都有,所以是兩倍的。

input+2paddingkernelinput+2*padding-kernel】是計算,這個要走多少步。來舉個例子就好理解了:

圖中是input爲7,然後kernel_size爲3,podding是1的一個例子。
從下圖中可以看出來,kernel總共要走6步

這個六步,就是
input+2paddingkernelinput+2*padding-kernel的含義,kernel要滑動的步數。

那麼stride就是步長,如果是2的話,那麼kernel移動就是這樣的(如下圖):

就變成3步了。那麼爲什麼計算公式最後還要加上1呢?就是在kernel還沒有邁出步子的時候,最開始的處於左上角的那個位置,也是一個點。

【總結:卷積輸出尺寸計算的時候,前面的分式,就是計算卷積核可以走幾步,然後再加上卷積核的初始位置,就是輸出尺寸了】


來看個正經的例子:

【這個例子展示了,如果輸入尺寸是一個偶數,卷積核是奇數的情況,如何計算——向下取整】

2.2 反捲積

其實反捲積就是另外一種形式的卷積。
反捲積中,stride就是在相鄰元素之間添加stride-1個0元素

從圖中可以看到,假設輸入圖片是3*3的,假設反捲積的stride爲2,那麼輸入圖像其實就是5*5的。

所以,實際的輸入圖像應該是:
input=input+(stride1)(input1)input'=input+(stride-1)(input-1)

剩下的內容就和之前一樣了,執行卷積的過程,不過反捲積的stride是用在擴展輸入圖像上的,而不是kernel移動的步長,所以反捲積中kernel步長永遠是1.

所以計算公式如下:
output=input+2paddingkernel+1output=input'+2*padding-kernel+1
帶入input=input+(stride1)(input1)input'=input+(stride-1)(input-1)得到:
output=stride(input1)+2paddingkernel+2output = stride(input-1)+2*padding-kernel+2

【總結:反捲積中,就是先擴展輸入input的尺寸,然後再去卷積】

2.3 兩個例題

輸入尺寸input=2,kernel_size=3,stride=1,padding=2,計算反捲積的輸出尺寸?

【答案:output=4】


輸入尺寸input=3,kernel=3,stride=2,padding=1,計算反捲積的輸出尺寸?

【答案:output=5】


喜歡的話,加個關注唄!
公衆號回覆【下載】還有持續更新的免費的精選機器學習資料哦~

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章