CNN中关于维度的混淆

2024-06-01 00:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

img 上面的图片使用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之后维度是如何相同的,如果维度相同,那么我应该删除此操作吗?还是我做错了什么


Tags: 图像过滤器示例数量体系结构图片工具箱卷积
2条回答

tldr:如果要在每个步骤中减小图像大小,请使用padding=valid。这是默认选项

Maxpooilign通常用于下采样和减少过拟合

如果使用padding='same',则会将图像拉伸到输入大小,不会导致大小下降

在下面的示例中,输入大小为4*4,池为2*2,(默认)步长为2x2,因此输出为2*2

MaxPooling Example

在keras official site上找到更多示例

对于卷积层和最大池层,填充的作用是不同的。如果卷积层中的padding=same,则表示输出大小(主要是高度和宽度)与输入大小相同。 另一方面,池层中的填充具有不同的功能。合并层的目的是减少空间维度(高度和宽度)。在池层中,padding=same并不意味着空间维度不变。当输入大小和内核大小不完全匹配时,需要在池中填充以弥补重叠

相关问题 更多 >