TensorFlow的reshape操作 tf.reshape的实现
初学tensorflow,如果写的不对的,请更正,谢谢!
tf.reshape(tensor,shape,name=None)
函数的作用是将tensor变换为参数shape的形式。
其中shape为一个列表形式,特殊的一点是列表中可以存在-1。-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1。(当然如果存在多个-1,就是一个存在多解的方程了)
好了我想说的重点还有一个就是根据shape如何变换矩阵。其实简单的想就是,
reshape(t,shape)=>reshape(t,[-1])=>reshape(t,shape)
首先将矩阵t变为一维矩阵,然后再对矩阵的形式更改就可以了。
官方的例子:
#tensor't'is[1,2,3,4,5,6,7,8,9] #tensor't'hasshape[9] reshape(t,[3,3])==>[[1,2,3], [4,5,6], [7,8,9]] #tensor't'is[[[1,1],[2,2]], #[[3,3],[4,4]]] #tensor't'hasshape[2,2,2] reshape(t,[2,4])==>[[1,1,2,2], [3,3,4,4]] #tensor't'is[[[1,1,1], #[2,2,2]], #[[3,3,3], #[4,4,4]], #[[5,5,5], #[6,6,6]]] #tensor't'hasshape[3,2,3] #pass'[-1]'toflatten't' reshape(t,[-1])==>[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6] #-1canalsobeusedtoinfertheshape #-1isinferredtobe9: reshape(t,[2,-1])==>[[1,1,1,2,2,2,3,3,3], [4,4,4,5,5,5,6,6,6]] #-1isinferredtobe2: reshape(t,[-1,9])==>[[1,1,1,2,2,2,3,3,3], [4,4,4,5,5,5,6,6,6]] #-1isinferredtobe3: reshape(t,[2,-1,3])==>[[[1,1,1], [2,2,2], [3,3,3]], [[4,4,4], [5,5,5], [6,6,6]]] #tensor't'is[7] #shape`[]`reshapestoascalar reshape(t,[])==>7
在举几个例子或许就清楚了,有一个数组z,它的shape属性是(4,4)
z=np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]) z.shape (4,4)
z.reshape(-1)
z.reshape(-1) array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
z.reshape(-1,1)
也就是说,先前我们不知道z的shape属性是多少,但是想让z变成只有一列,行数不知道多少,通过`z.reshape(-1,1)`,Numpy自动计算出有12行,新的数组shape属性为(16,1),与原来的(4,4)配套。
z.reshape(-1,1) array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16]])
z.reshape(-1,2)
newshape等于-1,列数等于2,行数未知,reshape后的shape等于(8,2)
z.reshape(-1,2) array([[1,2], [3,4], [5,6], [7,8], [9,10], [11,12], [13,14], [15,16]])
到此这篇关于TensorFlow的reshape操作tf.reshape的实现的文章就介绍到这了,更多相关TensorFlow的reshape操作tf.reshape内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。