tensorflow2.0张量的维度变换
张量的轴的概念
如果从后向前访问轴就是使用复数,如上图所示
使用reshape函数改变张量的形状
将形状参数设置为-1,代表自动判断长度
增加和删除维度
增加维度
tf.expand_dims(input,axis)
- input:输入的张量
- axis:操作的轴
效果就是在选定的轴上添加维度(相当于在选定的那个轴上面添加了一个括号,将那一维变成二维)
一个多维张量的例子
删除维度
tf.squeeze(input,axis)
- input:输入的张量
- axis:对应要删除的维度
注:只能删除长度为1的维度,如果没有指定维度,默认删除所有长度为1的维度
交换维度
tf.transpose(a,perm)
- a:用于交换维度的张量
- perm:用于设置轴的顺序
在二维的情况下,可以视为是矩阵的转置
二维的情况下
多维的情况下
拼接和分割
拼接张量
指定一组张量在某一个轴进行拼接tf.concat(tensors,axis)
- tensors:用于拼接的张量
- axis:拼接的轴,也可以是负数,比如-1代表最后一个轴
分割张量
t1 = tf.split(value,num_or_size_splits,axis=0)
- value:待分割的张量
- num_or_size_splits:分割的方案,如果是一个数字x,则平均分割x份,如果是一个列表则按照列表中的数字的对应的比例进行分割
- axis:代表从哪个轴进行分割
- 返回的参数是分割后的张量列表
-
堆叠和分解
堆叠
堆叠和拼接是类似的 区别是是否增加了新的维度
tf.stack(values,axis)
- values:进行堆叠的张量
- axis:从哪一个轴进行堆叠
分解
分解是堆叠的逆运算