不管是卷积还是池化,输出图像大小的计算公式都是一样的:
输入数据W*W,卷积核K*K,步长为S,padding的像素数P
N = (W−K+2P)/S+1
假设输入图像大小100*100,
经过一层卷积(kernel size 5*5,padding 2,stride 1)
输出大小为N = floor((100-5+2*2)/1)+1 = 100(卷积向下取整floor)
接下来进行pooling(kernel size 3*3,padding 0,stride 2)
输出大小为N = ceil((100-3+2*0)/2)+1 = 50(池化向上取整ceil)
注意:
1、对于神经网络,若stride=1,当kernel=3, padding=1或kernel=5, padding=2,则卷积前后尺寸一致;
实际操作时,padding有“SAME”和“VALID”两种方式
padding = “SAME”时,会在图像周围填0
padding = “VALID”则不需要,即P=0
选“SAME”时,一来减缓图像变小的速度,二来防止边界信息丢失
2、padmod="VALID", 此时P=0, 对应N=floor((W-K)/S)+1
3、padmod=“SAME”: N = ceil(W/S)