卷积神经网络中的权重是什么?

7

我目前正在学习 TensorFlow 的多层卷积网络教程。

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

  • First Convolutional Layer:

    W_conv1 = weight_variable([5, 5, 1, 32])
    
  • Second Convolutional Layer:

    W_conv2 = weight_variable([5, 5, 32, 64])
    
  • Densely Connected Layer:

    W_fc1 = weight_variable([7 * 7 * 64, 1024])
    
  • Readout Layer:

    W_fc2 = weight_variable([1024, 10])
    

我对上述的权重变量的形状如何被我们知道有疑问。

是否有数学方法可以找到它们的形状?

1个回答

15

答案在同一页上有解释:

卷积层将为每个5x5的块计算32个特征。它的权重张量将具有形状[5, 5, 1, 32]

没有太多涉及到数学,但这些术语需要解释

  1. 卷积核的大小是5X5。这意味着有一个5X5矩阵,通过在图像上移动它来与输入图像进行卷积。查看this link以了解小的5X5矩阵如何在28X28图像上移动并将图像矩阵的不同单元格相乘。这给我们[5, 5, 1, 32]的前两个维度。
  2. 输入通道的大小是1。这些是黑白图像,因此只有一个输入通道。大多数彩色图像具有3个通道,因此在一些其他卷积网络中处理图像时可以期望出现3。实际上,对于第二层的W_conv2,输入通道的数量为32,与第一层的输出通道数量相同。
  3. 权重矩阵的最后一个维度可能最难以想象。想象一下你的5X5矩阵,并将其复制32次!每个这样的32个东西都称为通道。为了完成讨论,这32个5X5矩阵中的每一个都用随机权重初始化并在网络的前向/后向传播期间独立训练。更多的通道学习图像的不同方面,从而为您的网络提供额外的能力。
如果您总结这3个要点,您将得到第1层所需的维度。后续层是扩展-在这种情况下,前两个维度是内核大小(5X5)。第三个维度等于输入通道的大小,它等于上一层的输出通道的大小。(32,因为我们声明了第1层的32个输出通道)。最后一个维度是当前层的输出通道的大小(64,第二层甚至更大!再次保持独立的大量5X5内核有助于提高性能!)。
最后,最后两层:最终密集层是唯一涉及一些计算的内容:
1. 对于每个卷积层,最终大小=初始大小 2. 对于大小为kXk的池化层,最终大小=初始大小/k
因此,
1. 对于conv1,大小保持为28 X 28 2. pool1将大小减小到14 X 14 3. 对于conv2,大小保持为14 X 14 4. pool2将大小减小到7 X 7
当然,由于conv2,我们有64个通道 - 池化不会影响它们。因此,我们得到了一个最终的密集输入7X7X64。然后,我们创建完全连接的1024隐藏层,并添加10个输出类别,用于10个数字。

1
感谢您的精彩解释。您提到“32个东西被称为通道”;我仍然有点困惑,我们如何决定它必须是32而不是20(例如在这个例子中)。 - turtle
3
决定这个数字没有固定的公式。每个通道都会创建图像的一个抽象中间表示(例如边缘、对比度等),通常而言,通道越多越好,但太多的通道会导致学习速度变慢并引起过拟合。 - Sudeep Juvekar
好的,密集连接层中的1024也是一样的吗? - turtle
1
是的。通常来说,越多越好,但是太多的话就难以训练和过度拟合了。 - Sudeep Juvekar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接