卷积网络中的权重?

时间:2016-01-12 13:37:39

标签: python machine-learning tensorflow

我目前正在关注TensorFlow的Multilayer Convolutional Network教程。

在各个层中,重量初始化如下:

  • 第一卷积层:

    W_conv1 = weight_variable([5, 5, 1, 32])
    
  • 第二卷积层:

    W_conv2 = weight_variable([5, 5, 32, 64])
    
  • 密集连接层:

    W_fc1 = weight_variable([7 * 7 * 64, 1024])
    
  • 读取层:

    W_fc2 = weight_variable([1024, 10])
    

所以我怀疑我们知道上述重量变量的形状如何?

他们的数学用于找到它们的形状吗?

1 个答案:

答案 0 :(得分:9)

答案在同一页面上解释:

  

卷积将为每个5x5补丁计算32个特征。它的   重量张量的形状为[5,5,1,32]

没有涉及数学的说法,但这些术语需要解释

  1. 卷积核的大小为5X5。这意味着通过在图像周围移动输入图像,存在卷积5X5矩阵。检查this link,了解小5X5矩阵如何在28X28图像上移动,并将图像矩阵的不同单元格与其自身相乘。这为我们提供了[5, 5, 1, 32]
  2. 的前两个版本
  3. 输入通道的大小为1。这些是BW图像,因此是一个输入通道。大多数彩色图像有3个通道,所以在其他一些处理图像的卷积网络中需要3。实际上,对于第二层W_conv2,输入通道的数量为32,与第1层的输出通道数相同。
  4. 权重矩阵的最后一个维度可能难以想象。想象一下你的5X5矩阵,并复制它32次!这32件事中的每一件都称为channels。为了完成讨论,这些32 5X5矩阵中的每一个都用随机权重初始化,并在网络的前向/反向传播期间独立训练。更多频道可以了解图像的不同方面,从而为您的网络提供额外的电力。
  5. 如果总结这3个点,则得到第1层所需的尺寸。后续图层是扩展名 - 在这种情况下,前两个维度是内核大小(5X5)。第三维等于输入通道的大小,其等于前一层的输出通道的大小。 (32,因为我们声明了第1层的32个输出通道)。最终维度是当前层的输出通道的大小(64,对于第二层甚至更大!再次,保持大量独立的5X5内核有帮助!)。

    最后,最后两层:最后的密集层是唯一涉及一些计算的东西:

    1. 对于每个卷积层,最终大小=初始大小
    2. 用于汇集大小为kXk的图层,最终尺寸=初始尺寸/ k
    3. 所以,

      1. 对于conv1,尺寸仍为28 X 28
      2. pool1将尺寸缩小为14 X 14
      3. 对于conv2,尺寸仍为14 X 14
      4. pool2将尺寸缩小为7 X 7
      5. 当然,由于conv2,我们有64个频道 - 汇集不会影响他们。因此,我们得到7X7X64的最终密集输入。然后,我们会创建完全连接的1024隐藏图层,并为10位数添加10输出类。