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

时间:2017-07-17 11:52:54

标签: neural-network artificial-intelligence conv-neural-network

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

This link has an image to a popular CNN architecture called VGG19

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

因此,您可以将n*i+j图层组视为特征提取图层,其输出张量(类似于矢量中的尺寸/特征)将被馈送到网络末端的标准ANN中。