卷积神经网络系列之卷积/池化后特征图大小怎么计算??

1.卷积后的大小:

W:矩阵宽,H:矩阵高,F:卷积核宽和高,Ppadding(需要填充的0的个数),N:卷积核的个数,S:步长

width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高
width = (W - F + 2P)/ S + 1(向下取整)
height = (H - F + 2P) / S + 1
(向下取整)

conv2d(), max_pool() 中的 padding=SAME时,width=W,height=H,则保证输入输出尺寸图片大小相等,当padding=‘valid’时,P=0,相当于不填充~~
输出图像大小:(width,height,N)其中N代表的卷积核的个数就是在卷积操作中起到的分为N个通道数的作用

当卷积操作中含有膨胀因子d:

当卷积操作中含有膨胀因子d,且padding=pad,k为卷积核尺寸,stride为步长时:

out = (W - (F* d-1)+2* pad)/ S + 1(W、H相同)

2.池化后的大小:

width = (W - F)/ S + 1(向下取整)
height = (H - F) / S + 1
(向下取整)
卷积神经网络系列之卷积/池化后特征图大小怎么计算??_第1张图片

在深度学习中,可能对特征图的计算,tensorflow和pytorch的padding计算不同
1.tensorflow中:如果你想要输出等于输入,padding="SAME"即可,如果你想要输出别的尺寸的特征图,使用padding=‘VALID’,conv2d会自动计算输出特征图大小。
2.pytorch中:pytorch里面没有same和valid,所以你想要保持输出等于输入,要利用pad=t,t为填充尺寸,以保持输入输出特征图相等。

3.上采样UpSampling2D

上采样相当于放大多少倍,size=倍数
卷积神经网络系列之卷积/池化后特征图大小怎么计算??_第2张图片
卷积操作:
stride=[1,1,1,1]时:
padding=‘SAME’,卷积操作后图片大小不变
padding=‘VALID’,output_height=output_width = (W – F + 1) / S (结果向取整)

stride[1,1,1,1]时:
padding=‘SAME’,output_height = output_width = W / S (结果向上取整)
padding=‘VALID’,output_height=output_width = (W – F + 1) / S (结果向取整)

池化操作:
池化层通常以卷积层为输入,故此处的W和H分别为卷积层输出的featuremap的宽或者高,F为池化时的ksize的大小,S仍为步长
stride[1,1,1,1]时:
padding='SAME’时,output_height = output_width = W / S或者H / S (结果向上取整)
padding='VALID’时,output_height=output_width = (W – F + 1) / S (结果向取整)

stride=[1,1,1,1]时:
padding='SAME’时,池化后featuremap大小不变,output_width =
W,output_height = H
padding=‘VALID’,output_height=output_width = (W – F + 1) / S (结果向取整)
卷积神经网络系列之卷积/池化后特征图大小怎么计算??_第3张图片
卷积输出尺寸进一步说明:
在这里插入图片描述
参数含义:
n:特征图的宽或者高
k:卷积核的尺寸
p:padding的数值,一般指单侧填充几个单元
stride:步长

转置卷积输出尺寸:
转置卷积俗称反卷积,但正规叫法是转置卷积。是上采样方式中的一种。
转置卷积用来增大特征图的分辨率的。
在这里插入图片描述
上采样方式:
1.插值法
2.反池化
3.反卷积

通常的上采样方式:卷积池化

你可能感兴趣的:(神经网络)