【问题标题】:TensorFlow: Why does avg_pool ignore one stride dimension?TensorFlow:为什么 avg_pool 忽略一个步幅维度?
【发布时间】:2018-05-05 12:16:25
【问题描述】:

我试图跨越通道维度,以下代码表现出令人惊讶的行为。我的期望是tf.nn.max_pooltf.nn.avg_pool 在输入完全相同的参数时应该产生相同形状的张量。事实并非如此。

import tensorflow as tf

x = tf.get_variable('x', shape=(100, 32, 32, 64),
        initializer=tf.constant_initializer(5), dtype=tf.float32)
ksize = (1, 2, 2, 2)
strides = (1, 2, 2, 2)
max_pool = tf.nn.max_pool(x, ksize, strides, padding='SAME')
avg_pool = tf.nn.avg_pool(x, ksize, strides, padding='SAME')
print(max_pool.shape)
print(avg_pool.shape)

打印出来

$ python ex04/mini.py 
(100, 16, 16, 32)
(100, 16, 16, 64)

显然,我误解了一些东西。

【问题讨论】:

  • 我认为这是一个错误。如果您在 GitHub 上打开问题,请在此处链接,因为我想观看对话,谢谢
  • 这似乎是一个错误。或者,您可以使用 slim,它的性能很好。
  • @DenizBeker 你说的 slim 是什么意思?
  • @oarfish 您可以从这里查看详细信息。 github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/…

标签: python-3.x tensorflow deep-learning max-pooling


【解决方案1】:

【讨论】:

    【解决方案2】:

    链接https://github.com/Hvass-Labs/TensorFlow-Tutorials/issues/19 指出:

    第一个和最后一个步幅必须始终为 1, 因为第一个是图像编号和 最后一个用于输入通道。

    【讨论】:

    • 显然,must 被夸大了,因为它只是默默地运行而不是出错。看来我必须提交错误报告。
    猜你喜欢
    • 2011-08-02
    • 2016-06-12
    • 1970-01-01
    • 2012-11-30
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多