View source on GitHub |
Return true if the forward compatibility window has expired.
tf.compat.forward_compatible(
year, month, day
)
Forward-compatibility refers to scenarios where the producer of a TensorFlow model (a GraphDef or SavedModel) is compiled against a version of the TensorFlow library newer than what the consumer was compiled against. The "producer" is typically a Python program that constructs and trains a model while the "consumer" is typically another program that loads and serves the model.
TensorFlow has been supporting a 3 week forward-compatibility window for programs compiled from source at HEAD.
For example, consider the case where a new operation MyNewAwesomeAdd
is
created with the intent of replacing the implementation of an existing Python
wrapper - tf.add
. The Python wrapper implementation should change from
something like:
def add(inputs, name=None):
return gen_math_ops.add(inputs, name)
to:
from tensorflow.python.compat import compat
def add(inputs, name=None):
if compat.forward_compatible(year, month, day):
# Can use the awesome new implementation.
return gen_math_ops.my_new_awesome_add(inputs, name)
# To maintain forward compatibiltiy, use the old implementation.
return gen_math_ops.add(inputs, name)
Where year
, month
, and day
specify the date beyond which binaries
that consume a model are expected to have been updated to include the
new operations. This date is typically at least 3 weeks beyond the date
the code that adds the new operation is committed.
year
: A year (e.g., 2018). Must be an int
.month
: A month (1 <= month <= 12) in year. Must be an int
.day
: A day (1 <= day <= 31, or 30, or 29, or 28) in month. Must be an
int
.True if the caller can expect that serialized TensorFlow graphs produced can be consumed by programs that are compiled with the TensorFlow library source code after (year, month, day).