卷积网络中的权重?

2024-04-29 07:06:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在关注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])
    

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

他们有没有用数学来为他们找到形状?


Tags: tensorflow教程networkvariable卷积形状weight重量
1条回答
网友
1楼 · 发布于 2024-04-29 07:06:31

答案在同一页解释:

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. 输入通道的大小是1。这些是BW图像,因此有一个输入通道。大多数彩色图像都有3个通道,所以在其他一些处理图像的卷积网络中应该有一个3。实际上,对于第二层W_conv2,输入通道的数目是32,与第1层的输出通道数目相同。在
  3. 权重矩阵的最后一个维度可能是最难可视化的。想象一下你的5X5矩阵,复制32次!。这32种东西都被称为channels。为了完成讨论,这些325X5矩阵中的每一个都用随机权重初始化,并在网络的前向/后向传播过程中独立地进行训练。更多的频道了解图像的不同方面,从而为您的网络提供额外的能量。在

如果你总结这三点,你就得到了第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

当然,我们有64通道,因为conv2-pooling不会影响它们。因此,我们得到了7X7X64的最终密集输入。然后我们创建完全连接的1024隐藏层,并为10数字添加10输出类。在

相关问题 更多 >