TensorFlow:为什么avg_pool忽略一个跨度维度?

时间:2017-11-21 21:38:26

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

我正试图跨越频道维度,以下代码表现出令人惊讶的行为。我希望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)

显然,我误解了一些事情。

2 个答案:

答案 0 :(得分:4)

链接https://github.com/Hvass-Labs/TensorFlow-Tutorials/issues/19声明:

  

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

答案 1 :(得分:0)