# tensorflow: Shapes and Shaping 探究

## 定义

Tensor Transformations - Shapes and Shaping: TensorFlow provides several operations that you can use to determine the shape of a tensor and change the shape of a tensor.

tensorflow提供了一些操作，让用户可以定义和修改tensor的形状

## 常用API

### tf.shape

以tensor形式，返回tensor形状。

tf.shape(input, name=None, out_type=tf.int32)

```import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
with tf.Session() as sess:
print (sess.run(tf.shape(t)))```
`[2 2 3]`

另一种方法也可以的到类似答案：

```import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
print (t.shape)```
`(2, 2, 3)`

### tf.size

以tensor形式，返回tensor元素总数。

tf.size(input, name=None, out_type=tf.int32)

```import tensorflow as tf

t = tf.ones(shape=[2, 5, 10], dtype=tf.int32)

with tf.Session() as sess:
print (sess.run(tf.size(t)))```
`100`

### tf.rank

以tensor形式，返回tensor阶数。

tf.rank(input, name=None)

```import tensorflow as tf

t = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]], dtype=tf.int32)
with tf.Session() as sess:
print (sess.run(tf.rank(t)))```
`3`

### tf.reshape

以tensor形式，返回重新被塑形的tensor。

tf.reshape(tensor, shape, name=None)

```import tensorflow as tf

t = tf.constant(value=[1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=tf.int32)
with tf.Session() as sess:
print (sess.run(t))
print
print (sess.run(tf.reshape(t, [3, 3])))```
```[1 2 3 4 5 6 7 8 9]

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

### tf.squeeze

以tensor形式，返回移除指定维后的tensor。

tf.squeeze(input, axis=None, name=None, squeeze_dims=None)

• `axis=None` 时： Removes dimensions of size 1 from the shape of a tensor. 将tensor中 维度为1所有维 全部移除
• `axis=[2, 4]` 时： 将tensor中 维度为1第2维第4维 移除
```import tensorflow as tf

t = tf.ones(shape=[1, 2, 1, 3, 1, 1], dtype=tf.int32)

with tf.Session() as sess:
print (sess.run(tf.shape(t)))
print
print (sess.run(tf.shape(tf.squeeze(t))))
print
print (sess.run(tf.shape(tf.squeeze(t, axis=[2, 4]))))```
```[1 2 1 3 1 1]

[2 3]

[1 2 3 1]```

### tf.expand_dims

以tensor形式，返回插入指定维后的tensor。

tf.expand_dims(input, axis=None, name=None, dim=None)

```import tensorflow as tf

t = tf.ones(shape=[2, 3, 5], dtype=tf.int32)

with tf.Session() as sess:
print (sess.run(tf.shape(t)))
print
print (sess.run(tf.shape(tf.expand_dims(t, 0))))
print
print (sess.run(tf.shape(tf.expand_dims(t, 1))))
print
print (sess.run(tf.shape(tf.expand_dims(t, 2))))
print
print (sess.run(tf.shape(tf.expand_dims(t, 3))))
print
print (sess.run(tf.shape(tf.expand_dims(t, -1))))```
```[2 3 5]

[1 2 3 5]

[2 1 3 5]

[2 3 1 5]

[2 3 5 1]

[2 3 5 1]```

600 篇文章43 人订阅

0 条评论

## 相关文章

6526

1142

1600

### Python算法分享系列-查找，排序，递归

iTesting，爱测试，爱分享 沉寂了一段时间，继续学习。 算法这个系列我想分享很久了，奈何本身对算法不是特别了解，又找不到合适的载体来分享。 最近看了本有趣...

4306

1084

### UML类图

这几天回顾了《大话设计模式》，发现看类图的时候分不清了，为了加强记忆，也方便回顾，自己手动画了一次类图，并参考了网上文章将此作为笔记，记录下来。

1514

1951

4410

### C语言测试题

2. 假设已指定i为整型变量，f为float变量，d为double型变量，e为long型，有下面式子：

1525

7611