tur*_*tle 5 python machine-learning tensorflow
我目前正在关注TensorFlow的多层卷积网络教程.
在各层中,重量初始化如下:
第一卷积层:
W_conv1 = weight_variable([5, 5, 1, 32])
Run Code Online (Sandbox Code Playgroud)第二卷积层:
W_conv2 = weight_variable([5, 5, 32, 64])
Run Code Online (Sandbox Code Playgroud)密集连接层:
W_fc1 = weight_variable([7 * 7 * 64, 1024])
Run Code Online (Sandbox Code Playgroud)读出层:
W_fc2 = weight_variable([1024, 10])
Run Code Online (Sandbox Code Playgroud)所以我怀疑上述重量变量的形状如何为我们所知?
他们的数学习惯用于找到它们的形状吗?
Sud*_*kar 10
答案在同一页面上解释:
卷积将为每个5x5补丁计算32个特征.它的重量张量将具有[5,5,1,32]的形状
没有涉及数学的说法,但这些术语需要解释
5X5.这意味着有一个5X5矩阵通过在图像周围移动来与输入图像进行卷积.检查此链接以获取有关小5X5矩阵如何在28X28图像上移动并将图像矩阵的不同单元格与其自身相乘的说明.这给了我们前两个版本[5, 5, 1, 32]1.这些是BW图像,因此是一个输入通道.大多数彩色图像有3个通道,所以期望3在其他一些卷积网络中处理图像.实际上,对于第二层,W_conv2输入通道的32数量与层1的输出通道的数量相同.5X5矩阵,并复制它32次!这32个东西中的每一个都被称为channels.为了完成讨论,5X5用随机权重初始化这32个矩阵中的每一个,并在网络的前向/后向传播期间独立地训练.更多频道可以了解图像的不同方面,从而为您的网络提供额外的电力.如果总结这3个点,则得到第1层所需的尺寸.后续图层是扩展名 - 在这种情况下,前两个维度是内核大小(5X5).第三维等于输入通道的大小,其等于前一层的输出通道的大小.(32,因为我们声明了第1层的32个输出通道).最终维度是当前层的输出通道的大小(64,对于第二层甚至更大!再次,保持大量独立的5X5内核有帮助!).
最后,最后两层:最后的密集层是唯一涉及一些计算的东西:
所以,
28 X 2814 X 1414 X 147 X 7当然,64由于conv2 ,我们有渠道 - 汇集并不影响他们.因此,我们得到了最终的密集输入7X7X64.然后,我们创建完全连接的1024隐藏层并10为10数字添加输出类.