【问题标题】:feature number in tensorflow tf.nn.conv2d张量流 tf.nn.conv2d 中的特征号
【发布时间】:2017-07-16 15:46:00
【问题描述】:

在 Tensorflow 示例中“专家深度 MNIST”https://www.tensorflow.org/get_started/mnist/pros

我不清楚如何确定激活函数权重中指定的特征数。

例如:

我们现在可以实现我们的第一层。它将由卷积组成, 其次是最大池化。卷积将计算 32 个特征 每个 5x5 补丁。

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

这里为什么选择 32?

为了构建一个深度网络,我们把这个堆叠了好几层 类型。第二层将有每个 5x5 补丁的 64 个特征。

W_conv2 = weight_variable([5, 5, 32, 64])

再次,为什么选择64?

现在图像尺寸已减小到 7x7,我们添加一个 具有 1024 个神经元的全连接层,允许在 整张图片。

W_fc1 = weight_variable([7 * 7 * 64, 1024])

这里为什么是 1024?

谢谢

【问题讨论】:

标签: machine-learning tensorflow deep-learning


【解决方案1】:

这些滤镜中的每一个实际上都会做一些事情,例如检查边缘,检查颜色变化,或者右移、左拉扯图像、锐化、模糊等。 这些过滤器中的每一个实际上都在通过锐化、增强、平滑、强化等来找出图像的含义。

例如检查此链接,它解释了这些过滤器的含义 http://setosa.io/ev/image-kernels/

所以所有这些过滤器实际上都是神经元,其输出将被最大池化,并在经过一些激活后最终馈入 FC 层。

如果您只想了解过滤器,那是另一种方法。但是,如果您想了解如何转换。架构可以工作,但由于这些是在数据集上经过尝试和测试的过滤器,您现在应该使用它。

过滤器也通过反向传播学习。

【讨论】:

    【解决方案2】:

    32 和 64 是各自层中的过滤器数量。 1024是全连接层的输出神经元个数。 您的问题基本上是关于选择这些超参数的原因。

    这些特定选择背后没有数学或编程原因。这些是在实验后得到的,因为它们在 MNIST 数据集上提供了良好的准确性。 您可以更改这些数字,这是修改模型的一种方式。 遗憾的是,您还无法在 TensorFlow 或任何其他文献资源中探索这些参数背后的选择原因。

    【讨论】:

    • 只是想确保我理解正确。这些特征数字是我们手动调整的,不是从 CNN 自动学习的。
    猜你喜欢
    • 2018-03-25
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2018-12-12
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多