上面的图片使用Matlab的深度学习工具箱生成,显示了为玩具示例创建的CNN的体系结构。输入图像的大小为25*20*7
,每个大小为5*5
的过滤器数量为15个,填充为same
。第一个卷积conv1
的输出是25*20*15
,它进入大小为2*2
的maxpooling 1操作,带有跨步1
和填充same
根据我的理解,maxpooling的作用是执行降维。然而,在我的代码中,由于填充设置为same
,我理解maxpooling的输出将保留其输入的空间维度,即25*20*15
。这就是为什么MaxPoolig1的输出和maxpooling的其余部分与其输入具有相同的维度,并且其余层中的维度没有变化。例如,maxpooling的输出应该是:(25 - 2 +2*1/1) + 1
=23+2/1 + 1 = 25
。类似地,对于第二维度,maxpooling将产生:(20 - 2 +2*1/1) + 1
=18+2/1 + 1 = 20
。因此,maxpooling的输出应该是25*20*15
这意味着maxpooling没有进行降维。因此,如果padding选项设置为same
,我应该删除maxpooling吗
请让我知道在执行maxpooling之后维度是如何相同的,如果维度相同,那么我应该删除此操作吗?还是我做错了什么
tldr:如果要在每个步骤中减小图像大小,请使用padding=valid。这是默认选项
Maxpooilign通常用于下采样和减少过拟合
如果使用padding='same',则会将图像拉伸到输入大小,不会导致大小下降
在下面的示例中,输入大小为4*4,池为2*2,(默认)步长为2x2,因此输出为2*2
在keras official site上找到更多示例
对于卷积层和最大池层,填充的作用是不同的。如果卷积层中的padding=
same
,则表示输出大小(主要是高度和宽度)与输入大小相同。 另一方面,池层中的填充具有不同的功能。合并层的目的是减少空间维度(高度和宽度)。在池层中,padding=same
并不意味着空间维度不变。当输入大小和内核大小不完全匹配时,需要在池中填充以弥补重叠相关问题 更多 >
编程相关推荐