[深度学习]零基础入门TensorFlow之reshape

导语

在深度学习中,数据变形非常普遍,reshape作用是将tensor变换为参数shape的形式

语法

tf.reshape(tensor, shape, name=None) 

tensor为入参,shape为变换的矩阵格式,name可略

实例1

import tensorflow as tf

#定义常量,一维矩阵
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7,8])  

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer()) #初始化Tensor变量
    print(sess.run(tensor))  #输出常量
    #转换为两行四列的矩阵,shape=[2,4]
    tensorReshape = tf.reshape(tensor,[2,4])
    print(sess.run(tensorReshape))  #输出变形后

第一个print原矩阵

[1 2 3 4 5 6 7 8]

第二个print输出变换的矩阵

[[1 2 3 4]
 [5 6 7 8]]

shape的列表数决定了转换后的矩阵维度,比如

shape=[2,4]#二维矩阵
shape=[1,2,4]#三维矩阵

shape的列表值可以为-1

实例2

import tensorflow as tf

tensor = tf.constant([1, 2, 3, 4, 5, 6, 7,8])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    tensorReshape = tf.reshape(tensor,[2,-1])
    print(sess.run(tensorReshape))

输出

[[1 2 3 4]
 [5 6 7 8]]

实例3

import tensorflow as tf

tensor = tf.constant([1, 2, 3, 4, 5, 6, 7,8])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    tensorReshape = tf.reshape(tensor,[-1,4])
    print(sess.run(tensorReshape))

输出

[[1 2 3 4]
 [5 6 7 8]]

可以看出shape的三种入参形式[2,4][2,-1][-1,4],得到相同的变换矩阵,
-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1

附:官方例子

# tensor 't' is [1, 2, 3, 4, 5, 6, 7, 8, 9]
# tensor 't' has shape [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' has shape [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' has shape [3, 2, 3]
# pass '[-1]' to flatten 't'
reshape(t, [-1]) ==> [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6]

# -1 can also be used to infer the shape

# -1 is inferred to be 9:
reshape(t, [2, -1]) ==> [[1, 1, 1, 2, 2, 2, 3, 3, 3],
                         [4, 4, 4, 5, 5, 5, 6, 6, 6]]
# -1 is inferred to be 2:
reshape(t, [-1, 9]) ==> [[1, 1, 1, 2, 2, 2, 3, 3, 3],
                         [4, 4, 4, 5, 5, 5, 6, 6, 6]]
# -1 is inferred to be 3:
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 `[]` reshapes to a scalar
reshape(t, []) ==> 7
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 梦中人未老, 镜里发先斑。 唯愿重逢日, 俱是飘零客。
    尚糊涂阅读 1,211评论 0 1
  • 在《智能大数据SMART准则》一书中作者认为成功的报告结果必须符合:将你分析的度量和数据有效的转化为有商业价值的见...
    needrunning阅读 1,819评论 0 0
  • 一、在基层要耐得住 不管你能力有多么强、不管你人品有多好,你毕竟是一个新人,你上面有领导、长辈级同事,在他们面...
    OliviaSong阅读 4,509评论 4 9
  • 一直都知道家庭教育 对一个人的一生影响很大 比如说小便 小便的妈妈是幼师 小便的姐姐也在做教育事业 小便的爸爸之前...
    马田心Martinc手作阅读 1,621评论 10 2

友情链接更多精彩内容