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

Neural network CNN中从卷积层到完全连接层的输入尺寸,neural-network,artificial-intelligence,conv-neural-network,Neural Network,Artificial Intelligence,Conv Neural Network,问题在于卷积神经网络的数学细节。假设网络的体系结构(目标是图像分类)也是如此 输入图像32x32 第一个隐藏层3x28x28(由3个 尺寸5x5,步长=0且无填充),后跟 活化 池层(2x2区域上的池)生成 3x14x14 第二隐藏层6x10x10(由6个过滤器卷积而成 尺寸为5x5,步长=0且无填充),后跟 活化 池层(2x2区域上的池)生成 6x5x5 具有100个神经元的完全连接层(FCN)-1 具有10个神经元的完全连接层(FCN)-2 从我迄今为止的阅读资料中,我了解到每个6x5x

问题在于卷积神经网络的数学细节。假设网络的体系结构(目标是图像分类)也是如此

  • 输入图像32x32
  • 第一个隐藏层3x28x28(由3个 尺寸5x5,步长=0且无填充),后跟 活化
  • 池层(2x2区域上的池)生成 3x14x14
  • 第二隐藏层6x10x10(由6个过滤器卷积而成 尺寸为5x5,步长=0且无填充),后跟 活化
  • 池层(2x2区域上的池)生成 6x5x5
  • 具有100个神经元的完全连接层(FCN)-1
  • 具有10个神经元的完全连接层(FCN)-2
从我迄今为止的阅读资料中,我了解到每个6x5x5矩阵都与FCN-1相连。我有两个问题,这两个问题都与从一层输出到另一层的方式有关

  • 第二个池层的输出是6x5x5。这些是如何供给FCN-1的?我的意思是,FCN-1中的每个神经元都可以看作是以标量作为输入(或1x1矩阵)的节点。那么,我们如何为它提供6x5x5的输入呢?我最初认为我们应该将6x5x5矩阵展平,并将其转换为150x1数组,然后将其馈送给神经元,就好像我们有150个训练点一样。但是,将特征地图展平难道不能驳倒图像空间结构的争论吗
  • 从第一个池层,我们得到了3个14x14大小的特征图。第二层中的要素图是如何生成的?假设我在从第一个卷积层得到的3个要素图中看到相同的区域(从要素图左上角开始的5x5区域)。这三个5x5面片是否用作单独的训练示例,以在下一组特征图中生成相应的区域?如果是,那么如果这三个特征贴图是输入图像的RGB值呢?我们还会将它们作为单独的培训示例吗
  • 一般来说,一些CNN(如VGG 16、VGG 19)所做的是,它们展平MAX_池层的3D张量输出,因此在您的示例中,FC层的输入将变为
    (无,150)
    ,但其他CNN(如ResNet50)使用全局MAX函数来获得
    6x1x1x1
    (输出张量的维度),然后将其展平(将变成
    (无,6)
    )并馈入FC层

    为了回答你的问题,其中展平会破坏空间排列,当你展平图像时,假设像素位置是Xij(即第i行,第j列=
    n*i+j
    ,其中n是图像的宽度),然后基于矩阵表示,我们可以说它的上邻居是Xi-1,j
    (n*(i-1)+j)
    等等。对于其他相邻像素,由于像素与其相邻像素之间存在关联,FC层将自动调整权重以反映该信息


    <> p>因此,可以考虑<代码>对流>激活->池> <代码>层组作为特征提取层,其输出张量(类似于向量中的维数/特征)这将被输入到网络末尾的标准ANN中。

    请使用换行符和段落以及粗体、斜体和代码功能,以使答案更清晰