卷积网络中的权重?
Weights in Convolutional network?
我目前正在学习 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])
所以我有疑问 我们如何知道上述权重变量的形状?
他们是否使用任何数学来为他们找到形状?
同页解释答案:
The convolutional will compute 32 features for each 5x5 patch. Its
weight tensor will have a shape of [5, 5, 1, 32]
没有涉及数学的说法,但这些术语需要解释
- 卷积核大小为
5X5
。这意味着有一个 5X5
矩阵通过在图像周围移动它与输入图像 卷积 。检查 this link 以了解小型 5X5
矩阵如何在 28X28
图像上移动并将图像矩阵的不同单元格与自身相乘。这给了我们 [5, 5, 1, 32]
的前两个维度
- 输入通道的大小为
1
。这些是 BW 图像,因此是一个输入通道。大多数彩色图像有 3 个通道,因此在其他一些处理图像的卷积网络中期望 3
。实际上,对于第二层,W_conv2
,输入通道数为 32
,与第一层的输出通道数相同。
- 权重矩阵的最后一个维度可能是最难可视化的。想象一下您的
5X5
矩阵,并将其复制 32 次!。这32个东西每一个都叫做channels
。为了完成讨论,这 32 个 5X5
矩阵中的每一个都使用随机权重进行初始化,并在网络的 forward/back 传播期间独立训练。更多通道了解图像的不同方面,从而为您的网络提供额外的功能。
如果总结这 3 点,您将获得第 1 层所需的维度。后续层是扩展 - 在这种情况下,前两个维度是内核大小 (5X5)。第三维等于输入通道的大小,等于前一层输出通道的大小。 (32,因为我们声明了第 1 层的 32 个输出通道)。最终维度是当前层输出通道的大小(64,第二层甚至更大!。同样,保持大量独立的 5X5 内核有帮助!)。
最后,最后两层:最后的致密层是唯一涉及一些计算的东西:
- 对于每个卷积层,最终尺寸=初始尺寸
- 对于大小为 kXk 的池化层,最终大小 = 初始大小 / k
所以,
- 对于 conv1,大小保持
28 X 28
- pool1 将大小减小到
14 X 14
- 对于 conv2,大小保持
14 X 14
- pool2 将大小减小到
7 X 7
当然,由于 conv2,我们有 64
个通道——池化不会影响它们。因此,我们得到了 7X7X64
的最终密集输入。然后,我们创建完全连接的 1024
个隐藏层,并为 10
个数字添加 10
个输出 类。
我目前正在学习 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])
所以我有疑问 我们如何知道上述权重变量的形状?
他们是否使用任何数学来为他们找到形状?
同页解释答案:
The convolutional will compute 32 features for each 5x5 patch. Its weight tensor will have a shape of [5, 5, 1, 32]
没有涉及数学的说法,但这些术语需要解释
- 卷积核大小为
5X5
。这意味着有一个5X5
矩阵通过在图像周围移动它与输入图像 卷积 。检查 this link 以了解小型5X5
矩阵如何在28X28
图像上移动并将图像矩阵的不同单元格与自身相乘。这给了我们[5, 5, 1, 32]
的前两个维度
- 输入通道的大小为
1
。这些是 BW 图像,因此是一个输入通道。大多数彩色图像有 3 个通道,因此在其他一些处理图像的卷积网络中期望3
。实际上,对于第二层,W_conv2
,输入通道数为32
,与第一层的输出通道数相同。 - 权重矩阵的最后一个维度可能是最难可视化的。想象一下您的
5X5
矩阵,并将其复制 32 次!。这32个东西每一个都叫做channels
。为了完成讨论,这 32 个5X5
矩阵中的每一个都使用随机权重进行初始化,并在网络的 forward/back 传播期间独立训练。更多通道了解图像的不同方面,从而为您的网络提供额外的功能。
如果总结这 3 点,您将获得第 1 层所需的维度。后续层是扩展 - 在这种情况下,前两个维度是内核大小 (5X5)。第三维等于输入通道的大小,等于前一层输出通道的大小。 (32,因为我们声明了第 1 层的 32 个输出通道)。最终维度是当前层输出通道的大小(64,第二层甚至更大!。同样,保持大量独立的 5X5 内核有帮助!)。
最后,最后两层:最后的致密层是唯一涉及一些计算的东西:
- 对于每个卷积层,最终尺寸=初始尺寸
- 对于大小为 kXk 的池化层,最终大小 = 初始大小 / k
所以,
- 对于 conv1,大小保持
28 X 28
- pool1 将大小减小到
14 X 14
- 对于 conv2,大小保持
14 X 14
- pool2 将大小减小到
7 X 7
当然,由于 conv2,我们有 64
个通道——池化不会影响它们。因此,我们得到了 7X7X64
的最终密集输入。然后,我们创建完全连接的 1024
个隐藏层,并为 10
个数字添加 10
个输出 类。