View source on GitHub |
Describes the type of a tf.Tensor.
Inherits From: TypeSpec
, TraceType
tf.TensorSpec(
shape,
dtype=tf.dtypes.float32
,
name=None
)
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 type
tf.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 .
|
Methods
experimental_as_proto
experimental_as_proto() -> struct_pb2.TensorSpecProto
Returns a proto representation of the TensorSpec instance.
experimental_from_proto
@classmethod
experimental_from_proto( proto: struct_pb2.TensorSpecProto ) -> 'TensorSpec'
Returns a TensorSpec instance based on the serialized proto.
experimental_type_proto
@classmethod
experimental_type_proto() -> Type[struct_pb2.TensorSpecProto]
Returns the type of proto associated with TensorSpec serialization.
from_spec
@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
@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
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
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
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
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 self
and other .
|
__eq__
__eq__(
other
)
Return self==value.
__ne__
__ne__(
other
)
Return self!=value.