tensorflow tensor 维度变换
- 张量是 TensorFlow 中多维数组的载体,用 Tensor 对象实现
- 在 CPU 环境下,张量和 NumPy 数组是共享同一段内存的,只是 tensorflow 和 numpy 各自采用不同的方式读取它。
- 多维张量在内存中是以一维数组的方式连续存储的
改变张量的形状: tf.reshape(tensor, shape)
创建时,修改维度:
轴与维度
轴可以是负数,维数较多,需要操作后几维时,用负数方便。
增加和删除维度 增加的这个维度上,长度为
1:tf.expand_dims(input, axis)
删除维度,只能删除长度为 1
的维度(不指定轴,删除所有维度为 1
的轴):tf.squeeze(input, axis)
增加和删除维度,只是改变了张量的视图,不会改变张量的存储。
交换维度
tf.transpose(a, perm),perm 为张量中各个轴的顺序
对于二维张量,就是矩阵的转置。
交换维度,不仅改变了张量的视图,同时也改变了张量的存储顺序
拼接与分割
图像的分割与拼接,改变了张量的视图,张量的存储顺序并没有改变。
拼接张量,拼接不会产生新的维度:
tf.concat(tesnsors,axis)
,分割张量,将一个张量拆分成多个张量,分割后维度不变。
tf.split(value, num_or_size_splits, axis=0)
value:张量 num_or_size_splits:分割方案,单个数表示等长切割份数,序列时,就是每份 2: 分割成 2 个张量 [1:2:1]: 就表示分割成三个张量,长度分别是 1,21
堆叠和分解
堆叠张量:tf.stack(values,axis)
合并张量时,创建一个新的维度。
values: 堆叠的多个张量 axis: 指定插入新的维度的位置
![16151956288185](https://blog-1259556217.cos.ap-chengdu.myqcloud.com/image/16151956288185.jpg)
分解张量:tf.unstack(values,axis)
将张量分解为多个张量;分解后得到的每个张量,和原来的张量相比,维数都少了一维。
![16152057498729](https://blog-1259556217.cos.ap-chengdu.myqcloud.com/image/16152057498729.jpg)