tf.TensorSpec  |  TensorFlow v2.16.1 (original) (raw)

Describes the type of a tf.Tensor.

Inherits From: TypeSpec, TraceType

View aliases

Compat aliases for migration

SeeMigration guide for more details.

tf.compat.v1.TensorSpec

tf.TensorSpec(
    shape,
    dtype=tf.dtypes.float32,
    name=None
)

Used in the notebooks

Used in the guide Used in the tutorials
Extension types Import a JAX model using JAX2TF Using the SavedModel format Better performance with tf.function Migrate the SavedModel workflow DeepDream Simple audio recognition: Recognizing keywords Load video data Transfer learning for video classification with MoViNet Video classification with a 3D convolutional neural network

t = tf.constant([[1,2,3],[4,5,6]]) tf.TensorSpec.from_tensor(t) TensorSpec(shape=(2, 3), dtype=tf.int32, name=None)

Contains metadata for describing the nature of tf.Tensor objects accepted or returned by some TensorFlow APIs.

For example, it can be used to constrain the type of inputs accepted by a tf.function:

@tf.function(input_signature=[tf.TensorSpec([1, None])]) def constrained_foo(t): print("tracing...") return t

Now the tf.function is able to assume that t is always of the typetf.TensorSpec([1, None]) which will avoid retracing as well as enforce the type restriction on inputs.

As a result, the following call with tensor of type tf.TensorSpec([1, 2])triggers a trace and succeeds:

>>> constrained_foo(tf.constant([[1., 2]])).numpy()
tracing...
array([[1., 2.]], dtype=float32)

The following subsequent call with tensor of type tf.TensorSpec([1, 4])does not trigger a trace and succeeds:

>>> constrained_foo(tf.constant([[1., 2, 3, 4]])).numpy()
array([[1., 2., 3., 4.], dtype=float32)

But the following call with tensor of type tf.TensorSpec([2, 2]) fails:

>>> constrained_foo(tf.constant([[1., 2], [3, 4]])).numpy()
Traceback (most recent call last):
...
TypeError: Binding inputs to tf.function `constrained_foo` failed ...
Args
shape Value convertible to tf.TensorShape. The shape of the tensor.
dtype Value convertible to tf.DType. The type of the tensor values.
name Optional name for the Tensor.
Raises
TypeError If shape is not convertible to a tf.TensorShape, or dtype is not convertible to a tf.DType.
Attributes
dtype Returns the dtype of elements in the tensor.
name Returns the (optionally provided) name of the described tensor.
shape Returns the TensorShape that represents the shape of the tensor.
value_type The Python type for values that are compatible with this TypeSpec.

Methods

experimental_as_proto

View source

experimental_as_proto() -> struct_pb2.TensorSpecProto

Returns a proto representation of the TensorSpec instance.

experimental_from_proto

View source

@classmethod experimental_from_proto( proto: struct_pb2.TensorSpecProto ) -> 'TensorSpec'

Returns a TensorSpec instance based on the serialized proto.

experimental_type_proto

View source

@classmethod experimental_type_proto() -> Type[struct_pb2.TensorSpecProto]

Returns the type of proto associated with TensorSpec serialization.

from_spec

View source

@classmethod from_spec( spec, name=None )

Returns a TensorSpec with the same shape and dtype as spec.

spec = tf.TensorSpec(shape=[8, 3], dtype=tf.int32, name="OriginalName") tf.TensorSpec.from_spec(spec, "NewName") TensorSpec(shape=(8, 3), dtype=tf.int32, name='NewName')

Args
spec The TypeSpec used to create the new TensorSpec.
name The name for the new TensorSpec. Defaults to spec.name.

from_tensor

View source

@classmethod from_tensor( tensor, name=None )

Returns a TensorSpec that describes tensor.

tf.TensorSpec.from_tensor(tf.constant([1, 2, 3])) TensorSpec(shape=(3,), dtype=tf.int32, name=None)

Args
tensor The tf.Tensor that should be described.
name A name for the TensorSpec. Defaults to tensor.op.name.
Returns
A TensorSpec that describes tensor.

is_compatible_with

View source

is_compatible_with(
    spec_or_tensor
)

Returns True if spec_or_tensor is compatible with this TensorSpec.

Two tensors are considered compatible if they have the same dtype and their shapes are compatible (see tf.TensorShape.is_compatible_with).

Args
spec_or_tensor A tf.TensorSpec or a tf.Tensor
Returns
True if spec_or_tensor is compatible with self.

is_subtype_of

View source

is_subtype_of(
    other
)

Returns True if self is a subtype of other.

Implements the tf.types.experimental.func.TraceType interface.

If not overridden by a subclass, the default behavior is to assume the TypeSpec is covariant upon attributes that implement TraceType and invariant upon rest of the attributes as well as the structure and type of the TypeSpec.

Args
other A TraceType object.

most_specific_common_supertype

View source

most_specific_common_supertype(
    others: Sequence[tf.types.experimental.TraceType]
) -> Optional['TypeSpec']

Returns the most specific supertype TypeSpec of self and others.

Implements the tf.types.experimental.func.TraceType interface.

If not overridden by a subclass, the default behavior is to assume the TypeSpec is covariant upon attributes that implement TraceType and invariant upon rest of the attributes as well as the structure and type of the TypeSpec.

Args
others A sequence of TraceTypes.

most_specific_compatible_type

View source

most_specific_compatible_type(
    other: 'TypeSpec'
) -> 'TypeSpec'

Returns the most specific TypeSpec compatible with self and other. (deprecated)

Deprecated. Please use most_specific_common_supertype instead. Do not override this function.

Args
other A TypeSpec.
Raises
ValueError If there is no TypeSpec that is compatible with both selfand other.

__eq__

View source

__eq__(
    other
)

Return self==value.

__ne__

View source

__ne__(
    other
)

Return self!=value.