1. 程式人生 > >TensorFlow中padding卷積的兩種方式“SAME”和“VALID”

TensorFlow中padding卷積的兩種方式“SAME”和“VALID”

最近在用tensorflow搭建卷積神經網路,遇到了一個比較棘手的問題,我一直理解的padding有兩個值,一個是SAME,一個是VALID,如果padding設定為SAME,則說明輸入圖片大小和輸出圖片大小是一致的,如果是VALID則圖片經過濾波器後可能會變小。
如下圖:
這裡寫圖片描述
這裡寫圖片描述

從程式中可以看出我的輸入是5*5*3,過濾器是3*3*3,padding設定的值是SAME,所以我一開始預想的是輸出5*5*7(有7個過濾器),可是最後程式執行的結果是3*3*7,和我預想的不一致,原來tensorflow官網定義的padding如下:

padding = “SAME”輸入和輸出大小關係如下:

這裡寫圖片描述
輸出大小等於輸入大小除以步長向上取整,s是步長大小;

padding = “VALID”輸入和輸出大小關係如下:

這裡寫圖片描述
輸出大小等於輸入大小減去濾波器大小加上1,最後再除以步長(f為濾波器的大小,s是步長大小)。

因此還是上述的那個例子,我的輸入是5*5*3,濾波器是3*3*3,padding= “SAME”,步長s = 2,因此根據公式我的輸出是(5/2=2.5),2.5向上取整是3,因此符合上述程式輸出的結果,如果我將padding的值改成“VALID”,則最後的輸出結果是
(5-3+1)/2=1.5,1.5向上取整是2,因此輸出應該是2*2*7。
如下圖:
這裡寫圖片描述
這裡寫圖片描述

程式執行符合結果!