函数原型
函数接口:
1 2 3 | tf.reshape( tensor, shape, name=None ) |
参数 | |
---|---|
Tensor张量 | |
Tensor张量,用于定义输出张量的shape,组成元素类型为 |
|
可选参数,用于定义操作名称. |
返回 |
---|
A |
用法
tf.reshape函数用于对输入tensor进行维度调整,但是这种调整方式并不会修改内部元素的数量以及元素之间的顺序,换句话说,reshape函数不能实现类似于矩阵转置的操作。比如,对于矩阵[[1,2,3],[4,5,6]],如果使用reshape,将维度变为[3,2], 其输出结果为:
其内部实现可以理解为:
tf.reshape(a, shape) ->tf.reshape(a, [-1]) ->tf.reshape(a, shape) 现将输入tensor,flatten铺平,然后再进行维度调整(元素的顺序没有变化)
tf.reshape不会更改张量中元素的顺序或总数,因此可以重用基础数据缓冲区。这使得它快速运行,而与要运行的张量有多大无关。
如果需要修改张量的维度来实现对元素重新排序,需要使用tf.transpose。
总结
关于tf.reshape函数我们需要知道的是:
- 函数用于张量维度调整,但是不会修改内部元素的数量以及相对顺序
- shape中-1表示这个维度的大小,程序运行时会自动计算填充(因为变换前后元素数量不变,我们可以根据其他维度的大小,最终确定-1这个位置应该表示的数字)
- 如果需要通过修改内部元素的存储顺序以实现维度调整,需要使用tf.transpose函数