|View source on GitHub|
Class outlining the default Tracing Protocol for Scalarizer.
If included as an argument, corresponding tf.function will always retrace for each usage.
Derived classes can override this behavior by specifying their own Tracing Protocol.
is_subtype_of( _ )
Returns True if
self is a subtype of
tf.function uses subtyping for dispatch:
a.is_subtype_of(b) is True, then an argument of
a can be used as argument to a
ConcreteFunction traced with an
||A TraceType object to be compared against.|
class Dimension(TraceType): def __init__(self, value: Optional[int]): self.value = value def is_subtype_of(self, other): # Either the value is the same or other has a generalized value that # can represent any specific ones. return (self.value == other.value) or (other.value is None)
most_specific_common_supertype( _ )
Returns the most specific supertype of
others, if exists.
TraceType is a supertype of
others, that is,
they are all subtypes (see
is_subtype_of) of it.
It is also most specific, that is, there it has no subtype that is also
a common supertype of
others have no common supertype, this returns
||A sequence of TraceTypes.|
class Dimension(TraceType): def __init__(self, value: Optional[int]): self.value = value def most_specific_common_supertype(self, other): # Either the value is the same or other has a generalized value that # can represent any specific ones. if self.value == other.value: return self.value else: return Dimension(None)
__eq__( _ )