【问题标题】:what's the difference between tf.nn.conv2d with strides = 2 and tf.nn.max_pool with 2x2 pooling?strides = 2 的 tf.nn.conv2d 和 2x2 池化的 tf.nn.max_pool 有什么区别?
【发布时间】:2018-01-17 14:06:30
【问题描述】:

如上所述,两者都

tf.nn.conv2d 步幅 = 2

2x2 池化的 tf.nn.max_pool

可以将输入的大小减少一半,我知道输出可能会有所不同,但我不知道是否会影响最终的训练结果,对此有任何线索,谢谢。

【问题讨论】:

标签: machine-learning tensorflow deep-learning training-data


【解决方案1】:

最终训练的结果实际上可能会有所不同,因为卷积将张量乘以过滤器,您可能不希望这样做,因为它会占用额外的计算时间,并且还会过度拟合您的模型,因为它会有更多的权重。

【讨论】:

    【解决方案2】:

    在您的两个示例中,假设我们应用了一个[height, width] 内核,其跨度为[2,2]。这意味着我们将内核应用于二维输入上大小为[height, width] 的二维窗口以获取输出值,然后将窗口向上或向下滑动 2 以获取下一个输出值。

    假设padding='SAME'

    不同之处在于如何计算每个窗口的输出值:

    conv2d

    • 输出是输入值乘以 [height, width] 内核中每个单元的权重的线性组合
    • 这些权重成为模型中的可训练参数

    最大池

    • 输出只是在[height, width] 输入值窗口中选择最大输入值
    • 此操作没有引入权重和可训练参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2011-10-31
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多