tf中几个shape问题

tf中有两对方法比较容易混淆,涉及的是shape问题,在此做一些区分。
首先说明tf中tensor有两种shape,分别为static (inferred) shapedynamic (true) shape,其中static shape用于构建图,由创建这个tensor的op推断(inferred)得来,故又称inferred shape。如果该tensor的static shape未定义,则可用tf.shape()来获得其dynamic shape

1. 区分x.get_shape()x = tf.shape(x)

x.get_shape()返回static shape,只有tensor有这个方法,返回是元组。
x.get_shape().as_list()是一个常用方法,经常被用于将输出转为标准的python list。
关于static shape的样例示范如下:

x = tf.placeholder(tf.int32, shape=[4])
print x.get_shape()
# ==> '(4,)'

get_shape()返回了x的静态类型,4代指x是一个长度为4的向量。需要注意,get_shape()不需要放在session中即可运行。
get_shape()不同,tf.shape()的示例代码如下:

y, _ = tf.unique(x)
print y.get_shape()
# ==> '(?,)'
sess = tf.Session()
print sess.run(y, feed_dict={x: [0, 1, 2, 3]}).shape
# ==> '(4,)'
print sess.run(y, feed_dict={x: [0, 0, 0, 0]}).shape
# ==> '(1,)'

通过此代码体会两种shape的不同,需要注意tf.shape()需要在session中运行。

2. 区分x.set_shape()tf.reshape()

set_shape更新tensor的static shape,不改变dynamic shape。reshape创建一个具备不同dynamic shape的新的tensor。


参考:
http://stackoverflow.com/questions/37096225/how-to-understand-static-shape-and-dynamic-shape-in-tensorflow
https://www.tensorflow.org/programmers_guide/faq

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 3,669评论 0 1
  • Effective TensorFlow Table of Contents TensorFlow Basics ...
    法布雷加嘻阅读 602评论 0 1
  • 清凉的春午,雨从天空飘落,伴随着欢快的足音,将温柔的胸脯轻轻地贴近大地,消融在芬芳的泥土里。。。侧卧在竹塌上...
    诚品阅读 275评论 0 0
  • "你站过的地方,风吹过是暖的"( ˘ ³˘) 每个人都有自己的偶像。。。 那么你的偶像是谁呢✔ 来看看有人气的偶像...
    小熊兔_阅读 458评论 1 0
  • 杀死一只知更鸟 拆掉思维里的墙 叔都不会读,还想成功 你今天真好看 少有人走过的路 做,就对了 在对的时间做对的事情
    阿狸向前阅读 105评论 0 0