越往里axis就越大,依次加1。
这里需要注意的是,axis可以为负数,此时表示倒数第axis个维度,这和Python中列表切片的用法类似。
下面举个多维tensor例子简单说明。下面是个 2 * 3 * 4 的tensor。
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]],
[[ 13 14 15 16]
[ 17 18 19 20]
[ 21 22 23 24]]]
tf.reduce_sum(tensor, axis=0) axis=0 说明是按第一个维度进行求和。那么求和结果shape是3*4
[[1+13 2+14 3+15 4+16]
[5+17 6+18 7+19 8+20]
[9+21 10+22 11+23 12+24]]
依次类推,如果axis=1,那么求和结果shape是2*4,即:
[[ 1 + 5 + 9 2 + 6+10 3 + 7+11 4 + 8+12]
[13+17+21 14+18+22 15+19+23 16+20+24]]
如果axis=2,那么求和结果shape是2*3,即:
[[1+2+3+4 5+6+7+8 9+10+11+12]
[13+14+15+16 17+18+19+20 1+22+23+24]]
类似的方法还有:
- tf.reduce_mean():计算tensor指定轴方向上的所有元素的平均值;
- tf.reduce_max():计算tensor指定轴方向上的各个元素的最大值;
- tf.reduce_all():计算tensor指定轴方向上的各个元素的逻辑和(and运算);
- tf.reduce_any():计算tensor指定轴方向上的各个元素的逻辑或(or运算);