(一)、形状变换的相关函数:
函数 描述
tf.shape(input,name=None) 返回一个张量,其值为输入参数input的shape。这个input可以是个张量,也可以是一个数组 或list。例如:t = [1,2,3,4,5,6,7,8,9] print(np.shape(t)) #输出(9,.) tshape=tf.shape(t) #返回 一个张量,值为python自有类型t的shape tshape2=tf.shape(tshape) #返回一个张量,值为 张量tshape的shape. sess=tf.Session()
tf.size(input,name=None) 返回一个张量,其内容为输入数据的元素数量。例如:t=[[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]] sizet = tf.size(t) ,sess = tf.Session(),print(sess.run(sizet)) #输出12,表示列表t中的元素个数
tf.rank(input,name=None) 返回一个张量,其内容为输入数据input的rank。注意,此rank不同于矩阵的rank, 【rank(阶)指的就是维度。但张量的阶和矩阵的阶并不是同一个概念,主要是看有几层中 括号】例如:t=[[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]] rankt = tf.rank(t), sess = tf.Session(),print(sess.run(rankt)) #输出4,表示列表t的阶(一共有4层中括号,[[[[]]]])
tf.reshape(input,shape,name=None) 将原有输入数据的shape按照指定形状进行变化,生成一个新的张量。例如:tt=[ 1,2,3,4,5,6,7,8,9], tf=tf.reshape(t,[3,3]),sess=tf.Session(),print(sess.run(tt)) #此时输 入的张量如下: #[1,2,3], #[4,5,6],#[7,8,9] #如果shape有元素[-1],则表示在该维度 下按照 原有数据自动计算。见下面的代码: ttt=tf.reshape(tt,[1,-1]), print(ttt.shape), #输入(1,9) 表示ttt的shape,print(tt.shape) #输出(3,3)表示tt并没有被修改。
tf.expand_dims(input,dim,name=None) 插入维度1进入一个tensor中。例如:t=[[2,3,3],[1,5,5]] ,t1=tf.expand_dims(t,0), t2=tf.expand_dims(t,1), t3=tf.expend_dims(t,2), t4=tf.expand_dims(t,-1) #如果写成 t4=tf.expand_dims(t,3),则会出错,因为只有两个维度。 print(np.shape(t)) #输出 (2,3),print(np.shape(t1)) #输出(1,2,3), print(np.shape(t2)) #输出(2,1,3), print(np.shape(np.shape(t3)) #输出(2,3,1),print(np.shape(t4)) #输出(2,3,1)。
tf.squeeze(input,dim,name=None) 将dim指定的维度去掉(dim所指定的维度必须为1,如果不为1则会报错)。例如: t=[[[[2],[1]]]], t1=tf.squeeze(t,0), t2=tf.squeeze(t,1), t3=tf.squeeze(t,3), t4=tf.squeeze(t,-1) #如果写成t4=tf.squeeze(t,2)会出错,因为2对应的维度为2,不为1。 print(np.shape(t) #(1,1,2,1),print(np.shape(t1)) #(1,2,1), print(np.shape(t2)) #(1,2,1) print(np.shape(t3)) #(1,1,2), print(np.shape(t4)) #(1,1,2)