How to get the dimensions of a tensor (in TensorFlow) at graph construction time?

I see most people confused about tf.shape(tensor) and tensor.get_shape()
Let’s make it clear:

  1. tf.shape

tf.shape is used for dynamic shape. If your tensor’s shape is changable, use it.
An example: a input is an image with changable width and height, we want resize it to half of its size, then we can write something like:
new_height = tf.shape(image)[0] / 2

  1. tensor.get_shape

tensor.get_shape is used for fixed shapes, which means the tensor’s shape can be deduced in the graph.

Conclusion:
tf.shape can be used almost anywhere, but t.get_shape only for shapes can be deduced from graph.

Leave a Comment

tech