在TensorFlow中,涉及到shape的问题比较容易混淆,为此,在这里做一下区分,简单的汇总一下。
首先要说明一点,tf中tensor有两种shape,分别为static (inferred) shape 和 dynamic (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 的样例如下所示: