目录
张量的维度变化
1. 维度shape查看
2. 维度重组
3. 维度增加
4. 维度减少
5. 转置
6. 广播(小维度变大维度)
学习目标:
①维度shape查看
②维度重组
③维度增加
④维度减少
⑤转置
⑥广播
const_d_1=tf.constant([[1,2,3,4]],shape=[2,2],dtype=tf.float32)
print(const_d_l.shape)
print(const_d_l.get_shape())
print(tf.shape(const_d_l) 输出为张量,其数值表示所查看张量维度大小
tf.reshape(tensor,shape,name=None): shape重组后张量的维度
reshape_1=tf.constant([[1,2,3],[4,5,6]])与print(reshape_1)与tf.reshape(reshape_1,(3,2)) 把2x3的维度变成3x2的维度
tf.expand_dims(input,axis,name=None)与expand_sampe_1=tf.random.normal([100,100,3]) 生成一张大小为100x100x3的张量表示一张尺寸为100x100的三通道彩色图片但一般都按四维处理NHWC CPU环境
tf.expand_dims(expand_sample_1,axis=0),shape) 输出(1,100,100,3)
tf.expand_dims(expand_sample_1,axis=1),shape) 输出(100,1,100,3)
tf.expand_dims(expand_sample_1,axis=-1倒序),shape) 输出(100,100,3,1)
tf.squeeze(input,axis=None,name=None)
squeeze_sample_1=tf.random.normal([1,100,100,3]) 但在做数据可视化用matplotlib和opencv输入格式三维
squeeze_sample_1=tf.squeeze(squeeze_sample_1,axis=0)
输出(100,100,3)
tf.tanspose(a,perm=None,conjugate=False,name='transpose')
a为输入张量
trans_sampe_1=tf.constant([1,2,3,4,5,6],shape=[2,3]) -> (2,3)
transposed_sample_1=tf.transpose(trans_sample_1) -> (3,2)
trans_sample_2=tf.random.normal([4,100,200,3]) perm原始顺序[0,1,2,3]
transposed_sample_2=tf.transpose(trans_sample_2,[0,2,1,3]) -> 输出(4,200,100,3)
tf.broadcast_to(input,shape,name=None):
broadcast_sample_1=tf.constant([1,2,3,4,5,6]) 一维张量
broadcasted_sample_1=tf.broadcast_to(broadcast_sample_1,shape=[4,6]) 变成4x6矩阵
输出:
[[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]
[1,2,3,4,5,6]]
运算时,当有两个数组a、b形状不同时,与numpy一样,tensorflow将自动触发广播机制