reduce_mean(
input_tensor,
axis=None,
keepdims=None,
name=None,
reduction_indices=None,
keep_dims=None
)
axis
表示按那个维度进行取平均值,当axis参数为list时,会按照list的值依次进行取平均,对于二维张量其取值有0
和1
,表示两个维度;当三维张量时其取值可以有0
、1
和2
,表示三个维度,否则会出错
- 对于二维张量:
0表示按列取平均
1表示按行取平均 - 对于三维张量:如图1,
0标志按宽,也就是张量的第一个维度
1表示按高,也就是张量的第二个维度
2表示按长,也就是张量的第三个维度
图1
可以这样理解:对于如下这个数组
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
括号外面的“维度”是一维、二维和三维,比如最外围的括号是一维,也就是0方向,其它类似;括号里面可以理解为“轴”,指的是返回低维数组含有原始高维数组某条轴上的所有数据,比如a111~ a341和a112~ a342,就是0轴上的数据,其它类似。
keep_dims=True
表示取均值完后的维度和输入维度相同
使用tf.reduce_mean()实现avg_pool()
y1 = tf.reduce_mean(inputs, [1, 2], keep_dims=True, name='avg_pool')
假设inputs
的维度是32x224x224x3
,y1
的维度就是32x1x1x3
,会先对inputs按照[1, 2]中的1按照第二维度取平均,也就是图1中a141、a241、a341这样取平均,然后对第一次取平均的结果按照[1, 2]中的2按第一维度取平均,也就是图1中的a311、a321、a331、a341这样取平均。
可能理解不到位,欢迎指正!
网友评论