从CNN中的卷积层到完全连接层的输入的尺寸

Clo*_*ave 2 artificial-intelligence neural-network conv-neural-network

问题在于卷积神经网络的数学细节.假设网络的结构(其目标是图像分类)是这样的

  • 输入图像32x32
  • 第一个隐藏层3x28x28(通过卷积为5x5,步长= 0且没有填充的3个滤波器形成),然后激活
  • 汇集层(汇集在2x2区域上),产生3x14x14的输出
  • 第二个隐藏层6x10x10(由6个大小为5x5的过滤器卷积形成,步长= 0且没有填充),然后激活
  • 汇集层(汇集在2x2区域上),产生6x5x5的输出
  • 完全连接层(FCN)-1,具有100个神经元
  • 完全连接层(FCN)-2有10个神经元

从我到目前为止的读数,我已经知道每个6x5x5矩阵都连接到FCN-1.我有两个问题,这两个问题都与一层输出到另一层的方式有关.

  1. 第二个汇集层的输出为6x5x5.这些如何喂给FCN-1?我的意思是FCN-1中的每个神经元都可以看作是以标量作为输入(或1x1矩阵)的节点.那么我们如何为它输入6x5x5的输入?我最初认为我们将6x5x5矩阵展平并将其转换为150x1阵列,然后将其馈送到神经元,就像我们有150个训练点一样.但是没有弄平特征图打败图像空间结构的论点?
  2. 从第一个汇集层,我们得到3个大小为14x14的特征映射.如何生成第二层中的要素图?假设我从第一个卷积层得到的3个特征映射中查看相同的区域(从特征映射的左上角开始的5x5区域).这三个5x5补丁是否用作单独的训练示例,以在下一组特征映射中生成相应的区域?如果是这样,那么如果三个特征图是输入图像的RGB值呢?我们还会将它们作为单独的培训示例吗?

ami*_*nda 5

通常一些CNN(如VGG 16,VGG 19)所做的是,它们将MAX_POOL层的3D张量输出展平,因此在您的示例中,FC层的输入将变为(None,150),但其他CNN(如ResNet50)使用全局得到的最大函数6x1x1(输出张量的维数)然后被展平(将成为(None,6))并被馈送到FC层.

该链接具有称为VGG19的流行CNN架构的图像.

要回答你的查询,其中展平会破坏空间排列,当你展平图像时,假设像素位置是X ij(即第i行,第j列= n*i+j,其中n是图像的宽度),那么基于矩阵表示我们可以说对于其他邻居,其上邻居是X i-1,j (n*(i-1)+j)等等,因为对于像素及其相邻像素存在共同关系,FC层将自动调整权重以反映该信息.

因此,您可以将convo->activation->pooling图层组视为特征提取图层,其输出张量(类似于矢量中的尺寸/特征)将被馈送到网络末端的标准ANN中.