tensorflow中shape和axis的理解


tensofrflow中有很多api都可以传入axis作为参数

tf.reduce_mean(A, axis=0)

我们可能大概理解axis是索引维度的参数,但是具体对应关系并不清楚。
下面我们举个例子就能很好理解:
首先我们创建一个2维的张量:

A = tf.reshape(tf.range(20),(5,4))
print(A)
tf.Tensor(
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]], shape=(5, 4), dtype=int32)

我们可以看到这个矩阵的 shape是(5,4),为5行4列两个维度,数据存在两层中括号。
首先我们先理解shape:
shape最后一个数字代表最低维度的轴的长度,这里代表列的长度,对应最里面那层括号中元素的数目。
shape倒数第二个数字代表次低维度的轴的长度,这里代表行的长度,对应外面那层括号中元素的数目。

可以扩展到多维的张量

axis就是对应于这个shape的。
axis=0代表着选择shape[0],二维的矩阵里面即为行,对应操作最外面一层中括号。
axis=1代表着选择shape[1],二维的矩阵里面即为列,对应操作里面那层括号。

axis=-1代表着选择shape[-1]在这里即shape[1],二维的矩阵里面即为列,对应操作里面那层括号。
扩展到任意维的张量,我们只需要对照着shape就可以理解。

例如tf.reduce_mean平均降维操作:

tf.reduce_mean(A, axis=0)
#axis为0索引shape[0]即为行
tf.Tensor([ 8.  9. 10. 11.], shape=(4,), dtype=float32)
#结果表现为shape[0]被去除,只剩列为4.

你可能感兴趣的:(tesnforflow,tensorflow,python,深度学习)