看李金洪的那本tf的入门书籍,在均值池化部分实验中出现了疑惑
import tensorflow as tf
img=tf.constant([
[[0.0,4.0],[0.0,4.0],[0.0,4.0],[0.0,4.0]],
[[1.0,5.0],[1.0,5.0],[1.0,5.0],[1.0,5.0]],
[[2.0,6.0],[2.0,6.0],[2.0,6.0],[2.0,6.0]],
[[3.0,7.0],[3.0,7.0], [3.0,7.0],[3.0,7.0]]
])
img=tf.reshape(img,[1,4,4,2])
pooling=tf.nn.max_pool(img,[1,2,2,1],[1,2,2,1],padding='VALID')
pooling1=tf.nn.max_pool(img,[1,2,2,1],[1,1,1,1],padding='VALID')
pooling2=tf.nn.avg_pool(img,[1,4,4,1],[1,1,1,1],padding='SAME')
pooling3=tf.nn.avg_pool(img,[1,4,4,1],[1,4,4,1],padding='SAME')
nt_hpool2_flat = tf.reshape(tf.transpose(img), [-1, 16])
pooling4=tf.reduce_mean(nt_hpool2_flat,1) #1对行求均值(1表示轴是列) 0 对列求均值
with tf.Session() as sess:
print("image:")
image=sess.run(img)
print (image)
result=sess.run(pooling)
print ("reslut:\n",result)
运行结果:
[[[[ 1. 5. ]
[ 1. 5. ]
[ 1. 5. ]
[ 1. 5. ]]
[[ 1.5 5.5]
[ 1.5 5.5]
[ 1.5 5.5]
[ 1.5 5.5]]
[[ 2. 6. ]
[ 2. 6. ]
[ 2. 6. ]
[ 2. 6. ]]
[[ 2.5 6.5]
[ 2.5 6.5]
[ 2.5 6.5]
[ 2.5 6.5]]]]
书中对均值池化后解释是,为零元素不计入均值计算的分母中,实际上这里有误。