View source on GitHub |
Returns a tensor containing the shape of the input tensor.
tf.shape( input, out_type=tf.dtypes.int32, name=None )
tf.shape
returns a 1-D integer tensor representing the shape of input
. For a scalar input, the tensor returned has a shape of (0,) and its value is the empty vector (i.e. []).
tf.shape(1.) <tf.Tensor: shape=(0,), dtype=int32, numpy=array([], dtype=int32)>
t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]) tf.shape(t) <tf.Tensor: shape=(3,), dtype=int32, numpy=array([2, 2, 3], dtype=int32)>
Note: When using symbolic tensors, such as when using the Keras API, tf.shape() will return the shape of the symbolic tensor.
a = tf.keras.layers.Input((None, 10)) tf.shape(a) <... shape=(3,) dtype=int32...>
In these cases, using tf.Tensor.shape
will return more informative results.
a.shape TensorShape([None, None, 10])
(The first None
represents the as yet unknown batch size.)
tf.shape
and Tensor.shape
should be identical in eager mode. Within tf.function
or within a compat.v1
context, not all dimensions may be known until execution time. Hence when defining custom layers and models for graph mode, prefer the dynamic tf.shape(x)
over the static x.shape
.
Args | |
---|---|
input | A Tensor or SparseTensor . |
out_type | (Optional) The specified output type of the operation (int32 or int64 ). Defaults to tf.int32 . |
name | A name for the operation (optional). |
Returns | |
---|---|
A Tensor of type out_type . |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/shape