Python CNN中关于维度的混淆
上面的图片使用Matlab的深度学习工具箱生成,显示了为玩具示例创建的CNN的体系结构。输入图像的大小为Python CNN中关于维度的混淆,python,matlab,deep-learning,conv-neural-network,Python,Matlab,Deep Learning,Conv Neural Network,上面的图片使用Matlab的深度学习工具箱生成,显示了为玩具示例创建的CNN的体系结构。输入图像的大小为25*20*7,每个大小为5*5的过滤器数量为15个,填充相同。第一个卷积conv1的输出是25*20*15,它进入大小为2*2的maxpooling 1操作,跨步1和填充相同 根据我的理解,maxpooling的作用是执行降维。但是,在我的代码中,由于填充设置为相同,我知道maxpooling的输出将保留其输入的空间维度,即25*20*15。这就是为什么MaxPoolig1的输出和maxpo
25*20*7
,每个大小为5*5
的过滤器数量为15个,填充相同。第一个卷积conv1
的输出是25*20*15
,它进入大小为2*2
的maxpooling 1操作,跨步1
和填充相同
根据我的理解,maxpooling的作用是执行降维。但是,在我的代码中,由于填充设置为相同
,我知道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上找到更多的例子。对于卷积层和最大池层,填充的作用是不同的。如果卷积层中的padding=same
,则表示输出大小(主要是高度和宽度)与输入大小相同。
另一方面,池层中的填充具有不同的功能。合并层的目的是减少空间维度(高度和宽度)。在池层中,padding=same
并不意味着空间维度不变。当输入大小和内核大小不完全匹配时,需要在池中填充以弥补重叠。您的问题不是特定于编程的。用于深入学习问题的帮助。好的,我已将问题张贴在那里。感谢您的回答。如果maxpooling的填充保持相同
不会导致维度发生变化,那么使用相同
选项有什么意义?我应该保留还是删除它?是的,您应该,如果您的目标是减少维度,您应该使用“padding=valid”。padding='same'还有其他用例,但它不如valid受欢迎,这就是为什么valid是默认选项。