卷积网络中的权重?

Weights in Convolutional network?

我目前正在学习 TensorFlow 的 Multilayer Convolutional Network 教程。

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

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

他们是否使用任何数学来为他们找到形状?

同页解释答案:

The convolutional will compute 32 features for each 5x5 patch. Its weight tensor will have a shape of [5, 5, 1, 32]

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

  1. 卷积核大小为5X5。这意味着有一个 5X5 矩阵通过在图像周围移动它与输入图像 卷积 。检查 this link 以了解小型 5X5 矩阵如何在 28X28 图像上移动并将图像矩阵的不同单元格与自身相乘。这给了我们 [5, 5, 1, 32]
  2. 的前两个维度
  3. 输入通道的大小为1。这些是 BW 图像,因此是一个输入通道。大多数彩色图像有 3 个通道,因此在其他一些处理图像的卷积网络中期望 3。实际上,对于第二层,W_conv2,输入通道数为 32,与第一层的输出通道数相同。
  4. 权重矩阵的最后一个维度可能是最难可视化的。想象一下您的 5X5 矩阵,并将其复制 32 次!。这32个东西每一个都叫做channels。为了完成讨论,这 32 个 5X5 矩阵中的每一个都使用随机权重进行初始化,并在网络的 forward/back 传播期间独立训练。更多通道了解图像的不同方面,从而为您的网络提供额外的功能。

如果总结这 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 个输出 类。