class tf.TensorShape
See the guide: Building Graphs > Defining new operations
Represents the shape of a Tensor
.
A TensorShape
represents a possibly-partial shape specification for a Tensor
. It may be one of the following:
If a tensor is produced by an operation of type "Foo"
, its shape may be inferred if there is a registered shape function for "Foo"
. See Shape functions in C++
for details of shape functions and how to register them. Alternatively, the shape may be set explicitly using tf.Tensor.set_shape
.
dims
Returns a list of Dimensions, or None if the shape is unspecified.
ndims
Returns the rank of this shape, or None if it is unspecified.
__init__(dims)
Creates a new TensorShape with the given dimensions.
dims
: A list of Dimensions, or None if the shape is unspecified. DEPRECATED: A single integer is treated as a singleton list.TypeError
: If dims cannot be converted to a list of dimensions.as_list()
Returns a list of integers or None
for each dimension.
A list of integers or None
for each dimension.
ValueError
: If self
is an unknown shape with an unknown rank.as_proto()
Returns this shape as a TensorShapeProto
.
assert_has_rank(rank)
Raises an exception if self
is not compatible with the given rank
.
rank
: An integer.ValueError
: If self
does not represent a shape with the given rank
.assert_is_compatible_with(other)
Raises exception if self
and other
do not represent the same shape.
This method can be used to assert that there exists a shape that both self
and other
represent.
other
: Another TensorShape.ValueError
: If self
and other
do not represent the same shape.assert_is_fully_defined()
Raises an exception if self
is not fully defined in every dimension.
ValueError
: If self
does not have a known value for every dimension.assert_same_rank(other)
Raises an exception if self
and other
do not have compatible ranks.
other
: Another TensorShape
.ValueError
: If self
and other
do not represent shapes with the same rank.concatenate(other)
Returns the concatenation of the dimension in self
and other
.
N.B. If either self
or other
is completely unknown, concatenation will discard information about the other shape. In future, we might support concatenation that preserves this information for use with slicing.
other
: Another TensorShape
.A TensorShape
whose dimensions are the concatenation of the dimensions in self
and other
.
is_compatible_with(other)
Returns True iff self
is compatible with other
.
Two possibly-partially-defined shapes are compatible if there exists a fully-defined shape that both shapes can represent. Thus, compatibility allows the shape inference code to reason about partially-defined shapes. For example:
TensorShape(None) is compatible with all shapes.
TensorShape([None, None]) is compatible with all two-dimensional shapes, such as TensorShape([32, 784]), and also TensorShape(None). It is not compatible with, for example, TensorShape([None]) or TensorShape([None, None, None]).
TensorShape([32, None]) is compatible with all two-dimensional shapes with size 32 in the 0th dimension, and also TensorShape([None, None]) and TensorShape(None). It is not compatible with, for example, TensorShape([32]), TensorShape([32, None, 1]) or TensorShape([64, None]).
TensorShape([32, 784]) is compatible with itself, and also TensorShape([32, None]), TensorShape([None, 784]), TensorShape([None, None]) and TensorShape(None). It is not compatible with, for example, TensorShape([32, 1, 784]) or TensorShape([None]).
The compatibility relation is reflexive and symmetric, but not transitive. For example, TensorShape([32, 784]) is compatible with TensorShape(None), and TensorShape(None) is compatible with TensorShape([4, 4]), but TensorShape([32, 784]) is not compatible with TensorShape([4, 4]).
other
: Another TensorShape.True iff self
is compatible with other
.
is_fully_defined()
Returns True iff self
is fully defined in every dimension.
merge_with(other)
Returns a TensorShape
combining the information in self
and other
.
The dimensions in self
and other
are merged elementwise, according to the rules defined for Dimension.merge_with()
.
other
: Another TensorShape
.A TensorShape
containing the combined information of self
and other
.
ValueError
: If self
and other
are not compatible.num_elements()
Returns the total number of elements, or none for incomplete shapes.
with_rank(rank)
Returns a shape based on self
with the given rank.
This method promotes a completely unknown shape to one with a known rank.
rank
: An integer.A shape that is at least as specific as self
with the given rank.
ValueError
: If self
does not represent a shape with the given rank
.with_rank_at_least(rank)
Returns a shape based on self
with at least the given rank.
rank
: An integer.A shape that is at least as specific as self
with at least the given rank.
ValueError
: If self
does not represent a shape with at least the given rank
.with_rank_at_most(rank)
Returns a shape based on self
with at most the given rank.
rank
: An integer.A shape that is at least as specific as self
with at most the given rank.
ValueError
: If self
does not represent a shape with at most the given rank
.Defined in tensorflow/python/framework/tensor_shape.py
.
© 2017 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/api_docs/python/tf/TensorShape