# [Tensorflow] Tensor维度理解

### Tensor维度理解

Tensor在Tensorflow中是N维矩阵，所以涉及到Tensor的方法，也都是对矩阵的处理。由于是多维，在Tensorflow中Tensor的流动过程就涉及到升维降维，这篇就通过一些接口的使用，来体会Tensor的维度概念。以下是个人体会，有不准确的请指出。

#### tf.reduce_mean

```reduce_mean(
input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None
)```

```x = tf.constant([[1., 1.], [2., 2.]])
tf.reduce_mean(x)  # 1.5
tf.reduce_mean(x, 0)  # [1.5, 1.5]
tf.reduce_mean(x, 1)  # [1.,  2.]```

x是二维数组[[1.0,1.0],[2.0, 2.0]] 当`axis`参数取默认值时，计算整个数组的均值：(1.+1.+2.+2.)/4=1.5 当`axis`取0，意味着对列取均值：[1.5, 1.5] 当`axis`取1，意味着对行取均值：[1.0, 2.0]

```sess = tf.Session()
x = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
print(sess.run(x))
print(sess.run(tf.reduce_mean(x)))
print(sess.run(tf.reduce_mean(x, 0)))
print(sess.run(tf.reduce_mean(x, 1)))```

```[[ 1.  2.  3.]
[ 4.  5.  6.]
[ 7.  8.  9.]]
5.0
[ 4.  5.  6.]
[ 2.  5.  8.]```

```sess = tf.Session()
x = tf.constant([[[1., 1.], [2., 2.]], [[3., 3.], [4., 4.]]])
print(sess.run(x))
print(sess.run(tf.reduce_mean(x)))
print(sess.run(tf.reduce_mean(x, 0)))
print(sess.run(tf.reduce_mean(x, 1)))
print(sess.run(tf.reduce_mean(x, 2)))```

```[[[ 1.  1.]
[ 2.  2.]]

[[ 3.  3.]
[ 4.  4.]]]```

```2.5
[[ 2.  2.]
[ 3.  3.]]
[[ 1.5  1.5]
[ 3.5  3.5]]
[[ 1.  2.]
[ 3.  4.]]```

```[[(1+3)/2, (1+3)/2],
[(2+4)/2, (2+4)/2]]```

`axis`取1，计算方式是：

```[[(1+2)/2, (1+2)/2],
[(3+4)/2, (3+4)/2]]```

`axis`取2，计算方式是：

```[[(1+1)/2, (2+2)/2],
[(3+3)/2, (4+4)/2]]```

```[[[ 1.  1.]
[ 2.  2.]]

[[ 3.  3.]
[ 4.  4.]]]```

```[[ 1.  2.]
[ 3.  4.]]```

axis=3-2=1，做倒数第二层计算(参考二维计算)：([1,1],[2,2])和([3, 3],[4, 4])

```[[ 1.5  1.5]
[ 3.5  3.5]]```

axis=3-3=1，做倒数第三层计算:([[1, 1], [2, 2]])([[3, 3], [4, 4]])

```[[ 2.  2.]
[ 3.  3.]]```

```# input 4-D
[[[[ 1.  1.]
[ 2.  2.]]

[[ 3.  3.]
[ 4.  4.]]]

[[[ 5.  5.]
[ 6.  6.]]

[[ 7.  7.]
[ 8.  8.]]]]
# axis=none
4.5

# axis=0
[[[ 3.  3.]
[ 4.  4.]]

[[ 5.  5.]
[ 6.  6.]]]

# axis=1
[[[ 2.  2.]
[ 3.  3.]]

[[ 6.  6.]
[ 7.  7.]]]```

the rank of the tensor is reduced by 1 for each entry in axis

```# 2*2
[[ 1.  1.]
[ 2.  2.]]
# keep_dims=False
[ 1.5  1.5]	# 1*2
[ 1.  2.]	#1*2
# keep_dims=True
[[ 1.5  1.5]]	#1*2
[[ 1.]			#2*1
[ 2.]]```

66 篇文章15 人订阅

0 条评论

## 相关文章

912

### 机器学习（六）Sigmoid函数和Softmax函数1 Sigmoid函数2 Softmax函数

1 Sigmoid函数 1.1 定义 Sigmoid函数是一个在生物学中常见的S型的函数，也称为S型生长曲线。Sigmoid函数常被用作神经网络的阈值函数，将变...

5.2K5

5066

4475

2916

### 自编码器是什么？有什么用？这里有一份入门指南（附代码）

? 自编码器（Autoencoder，AE），是一种利用反向传播算法使得输出值等于输入值的神经网络，它先将输入压缩成潜在空间表征，然后通过这种表征来重构输出。...

3366

3959

4176

5285

3514