如何理解tensorflow中的卷积参数?

时间:2016-09-13 03:44:15

标签: tensorflow conv-neural-network

当我阅读" Deep MNIST专家"在tensorflow教程中。

下面给出了第一层重量的功能。我无法理解为什么补丁大小是5 * 5以及为什么要素号是32,它们是你可以选择任何人的随机数,还是必须遵循一些规则?以及是否有特征编号" 32"是“卷积内核”吗?

  

W_conv1 = weight_variable([5,5,1,32])

     

第一卷积层

     

我们现在可以实现我们的第一层了。它将包括卷积,   然后是最大池。卷积将计算32个特征   对于每个5x5补丁。它的重量张量将具有[5,5,1,   32。前两个维度是补丁大小,接下来是   输入通道数,最后一个是输出数   通道。我们还将有一个偏置向量,每个向量都有一个组件   输出通道。

2 个答案:

答案 0 :(得分:1)

补丁大小和功能数量是网络超参数,因此完全是任意的。

顺便提一下,有一些经验法则可以用来定义工作和执行网络。 内核大小应该很小,因为多个小内核的应用程序和较少数量的大内核之间的等效性(它是一个图像处理主题,它在VGG paper中得到了很好的解释) 。另外,使用小型过滤器的操作可以更快地执行。

要提取的要素数量(在您的示例中为32)完全是任意的,找到正确的数字是某种艺术。

答案 1 :(得分:0)

是的,它们都是超参数,在本教程中大部分都是随机选择的。目前已经做了很多努力来找到适当的内核大小,但是对于本教程来说并不重要。

tutorial告诉:

  

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

tf.nn.conv2d()告诉第二个参数代表您的过滤器,由[filter_height, filter_width, in_channels, out_channels]组成。所以[5, 5, 1, 32]表示你的in_channels为1:你有一个灰度图像,所以这里没什么意外。

32意味着在我们的学习阶段,网络将尝试学习将在预测期间使用的32个不同的内核。您可以将此号码更改为任何其他号码,因为它是您可以调整的超参数。