Remove experimental keras SavedModel symbol from V2.
Users should use model.save(path, save_format='tf') instead. PiperOrigin-RevId: 276131264 Change-Id: If01f787860a117d6de8f96533cfa8b9a7a128a53
This commit is contained in:
parent
5022124b9e
commit
f3969a8df1
@ -64,7 +64,7 @@ sequential = LazyLoader(
|
|||||||
date=None,
|
date=None,
|
||||||
instructions=('Please use `model.save(..., save_format="tf")` or '
|
instructions=('Please use `model.save(..., save_format="tf")` or '
|
||||||
'`tf.keras.models.save_model(..., save_format="tf")`.'))
|
'`tf.keras.models.save_model(..., save_format="tf")`.'))
|
||||||
@keras_export('keras.experimental.export_saved_model')
|
@keras_export(v1=['keras.experimental.export_saved_model'])
|
||||||
def export_saved_model(model,
|
def export_saved_model(model,
|
||||||
saved_model_path,
|
saved_model_path,
|
||||||
custom_objects=None,
|
custom_objects=None,
|
||||||
@ -374,7 +374,7 @@ def _assert_same_non_optimizer_objects(model, model_graph, clone, clone_graph):
|
|||||||
date=None,
|
date=None,
|
||||||
instructions=('The experimental save and load functions have been '
|
instructions=('The experimental save and load functions have been '
|
||||||
'deprecated. Please switch to `tf.keras.models.load_model`.'))
|
'deprecated. Please switch to `tf.keras.models.load_model`.'))
|
||||||
@keras_export('keras.experimental.load_from_saved_model')
|
@keras_export(v1=['keras.experimental.load_from_saved_model'])
|
||||||
def load_from_saved_model(saved_model_path, custom_objects=None):
|
def load_from_saved_model(saved_model_path, custom_objects=None):
|
||||||
"""Loads a keras Model from a SavedModel created by `export_saved_model()`.
|
"""Loads a keras Model from a SavedModel created by `export_saved_model()`.
|
||||||
|
|
||||||
|
@ -32,14 +32,6 @@ tf_module {
|
|||||||
name: "WideDeepModel"
|
name: "WideDeepModel"
|
||||||
mtype: "<type \'type\'>"
|
mtype: "<type \'type\'>"
|
||||||
}
|
}
|
||||||
member_method {
|
|
||||||
name: "export_saved_model"
|
|
||||||
argspec: "args=[\'model\', \'saved_model_path\', \'custom_objects\', \'as_text\', \'input_signature\', \'serving_only\'], varargs=None, keywords=None, defaults=[\'None\', \'False\', \'None\', \'False\'], "
|
|
||||||
}
|
|
||||||
member_method {
|
|
||||||
name: "load_from_saved_model"
|
|
||||||
argspec: "args=[\'saved_model_path\', \'custom_objects\'], varargs=None, keywords=None, defaults=[\'None\'], "
|
|
||||||
}
|
|
||||||
member_method {
|
member_method {
|
||||||
name: "terminate_keras_multiprocessing_pools"
|
name: "terminate_keras_multiprocessing_pools"
|
||||||
argspec: "args=[\'grace_period\', \'use_sigkill\'], varargs=None, keywords=None, defaults=[\'0.1\', \'False\'], "
|
argspec: "args=[\'grace_period\', \'use_sigkill\'], varargs=None, keywords=None, defaults=[\'0.1\', \'False\'], "
|
||||||
|
@ -192,9 +192,9 @@ manual_symbol_renames = {
|
|||||||
"tf.contrib.util.constant_value":
|
"tf.contrib.util.constant_value":
|
||||||
"tf.get_static_value",
|
"tf.get_static_value",
|
||||||
"tf.contrib.saved_model.load_keras_model":
|
"tf.contrib.saved_model.load_keras_model":
|
||||||
"tf.keras.experimental.load_from_saved_model",
|
"tf.compat.v1.keras.experimental.load_from_saved_model",
|
||||||
"tf.contrib.saved_model.save_keras_model":
|
"tf.contrib.saved_model.save_keras_model":
|
||||||
"tf.keras.experimental.export_saved_model",
|
"tf.compat.v1.keras.experimental.export_saved_model",
|
||||||
"tf.contrib.rnn.RNNCell":
|
"tf.contrib.rnn.RNNCell":
|
||||||
"tf.compat.v1.nn.rnn_cell.RNNCell",
|
"tf.compat.v1.nn.rnn_cell.RNNCell",
|
||||||
"tf.contrib.rnn.LSTMStateTuple":
|
"tf.contrib.rnn.LSTMStateTuple":
|
||||||
|
@ -514,6 +514,10 @@ renames = {
|
|||||||
'tf.compat.v1.keras.backend.get_session',
|
'tf.compat.v1.keras.backend.get_session',
|
||||||
'tf.keras.backend.set_session':
|
'tf.keras.backend.set_session':
|
||||||
'tf.compat.v1.keras.backend.set_session',
|
'tf.compat.v1.keras.backend.set_session',
|
||||||
|
'tf.keras.experimental.export_saved_model':
|
||||||
|
'tf.compat.v1.keras.experimental.export_saved_model',
|
||||||
|
'tf.keras.experimental.load_from_saved_model':
|
||||||
|
'tf.compat.v1.keras.experimental.load_from_saved_model',
|
||||||
'tf.keras.layers.CuDNNGRU':
|
'tf.keras.layers.CuDNNGRU':
|
||||||
'tf.compat.v1.keras.layers.CuDNNGRU',
|
'tf.compat.v1.keras.layers.CuDNNGRU',
|
||||||
'tf.keras.layers.CuDNNLSTM':
|
'tf.keras.layers.CuDNNLSTM':
|
||||||
|
@ -862,6 +862,14 @@ class TFAPIChangeSpec(ast_edits.NoUpdateSpec):
|
|||||||
" and tf.distribute.experimental.CentralStorageStrategy (one machine). "
|
" and tf.distribute.experimental.CentralStorageStrategy (one machine). "
|
||||||
"Note the changes in constructors. " + distribute_strategy_api_changes)
|
"Note the changes in constructors. " + distribute_strategy_api_changes)
|
||||||
|
|
||||||
|
keras_experimental_export_comment = (
|
||||||
|
ast_edits.WARNING,
|
||||||
|
"tf.keras.experimental.export_saved_model and "
|
||||||
|
"tf.keras.experimental.load_from_saved_model have been deprecated."
|
||||||
|
"Please use model.save(path, save_format='tf') "
|
||||||
|
"(or alternatively tf.keras.models.save_model), and "
|
||||||
|
"tf.keras.models.load_model(path) instead.")
|
||||||
|
|
||||||
# Function warnings. <function name> placeholder inside warnings will be
|
# Function warnings. <function name> placeholder inside warnings will be
|
||||||
# replaced by function name.
|
# replaced by function name.
|
||||||
# You can use *. to add items which do not check the FQN, and apply to e.g.,
|
# You can use *. to add items which do not check the FQN, and apply to e.g.,
|
||||||
@ -921,6 +929,10 @@ class TFAPIChangeSpec(ast_edits.NoUpdateSpec):
|
|||||||
contrib_estimator_head_comment,
|
contrib_estimator_head_comment,
|
||||||
"tf.contrib.estimator.regression_head":
|
"tf.contrib.estimator.regression_head":
|
||||||
contrib_estimator_head_comment,
|
contrib_estimator_head_comment,
|
||||||
|
"tf.contrib.saved_model.load_keras_model":
|
||||||
|
keras_experimental_export_comment,
|
||||||
|
"tf.contrib.saved_model.save_keras_model":
|
||||||
|
keras_experimental_export_comment,
|
||||||
"tf.contrib.summary.all_summary_ops":
|
"tf.contrib.summary.all_summary_ops":
|
||||||
contrib_summary_comment,
|
contrib_summary_comment,
|
||||||
"tf.contrib.summary.audio":
|
"tf.contrib.summary.audio":
|
||||||
@ -1009,6 +1021,10 @@ class TFAPIChangeSpec(ast_edits.NoUpdateSpec):
|
|||||||
"checkpoints (format used by `keras_model.save_weights` and "
|
"checkpoints (format used by `keras_model.save_weights` and "
|
||||||
"`keras_model.load_weights`) by default in 2.0. To continue "
|
"`keras_model.load_weights`) by default in 2.0. To continue "
|
||||||
"saving name-based checkpoints, set `checkpoint_format='saver'`."),
|
"saving name-based checkpoints, set `checkpoint_format='saver'`."),
|
||||||
|
"tf.keras.experimental.export_saved_model":
|
||||||
|
keras_experimental_export_comment,
|
||||||
|
"tf.keras.experimental.load_from_saved_model":
|
||||||
|
keras_experimental_export_comment,
|
||||||
"tf.keras.initializers.Zeros":
|
"tf.keras.initializers.Zeros":
|
||||||
initializers_no_dtype_comment,
|
initializers_no_dtype_comment,
|
||||||
"tf.keras.initializers.zeros":
|
"tf.keras.initializers.zeros":
|
||||||
|
@ -1206,10 +1206,14 @@ bazel-bin/tensorflow/tools/compatibility/update/generate_v2_reorders_map
|
|||||||
"tf.contrib.saved_model.save_keras_model(model, './saved_models')\n"
|
"tf.contrib.saved_model.save_keras_model(model, './saved_models')\n"
|
||||||
"tf.contrib.saved_model.load_keras_model(saved_model_path)\n")
|
"tf.contrib.saved_model.load_keras_model(saved_model_path)\n")
|
||||||
expected_text = (
|
expected_text = (
|
||||||
"tf.keras.experimental.export_saved_model(model, './saved_models')\n"
|
"tf.compat.v1.keras.experimental.export_saved_model(model, "
|
||||||
"tf.keras.experimental.load_from_saved_model(saved_model_path)\n")
|
"'./saved_models')\ntf.compat.v1.keras.experimental."
|
||||||
_, unused_report, unused_errors, new_text = self._upgrade(text)
|
"load_from_saved_model(saved_model_path)\n"
|
||||||
|
)
|
||||||
|
_, report, unused_errors, new_text = self._upgrade(text)
|
||||||
self.assertEqual(new_text, expected_text)
|
self.assertEqual(new_text, expected_text)
|
||||||
|
expected_info = "Please use model.save"
|
||||||
|
self.assertIn(expected_info, report)
|
||||||
|
|
||||||
def testStatelessMultinomial(self):
|
def testStatelessMultinomial(self):
|
||||||
text = (
|
text = (
|
||||||
@ -2256,12 +2260,20 @@ def _log_prob(self, x):
|
|||||||
result_a, result_b = results[0], results[1]
|
result_a, result_b = results[0], results[1]
|
||||||
self.assertEqual(result_a[3], expected_text_a)
|
self.assertEqual(result_a[3], expected_text_a)
|
||||||
self.assertEqual(result_b[3], expected_text_b)
|
self.assertEqual(result_b[3], expected_text_b)
|
||||||
|
|
||||||
def test_model_to_estimator_checkpoint_warning(self):
|
def test_model_to_estimator_checkpoint_warning(self):
|
||||||
text = "tf.keras.estimator.model_to_estimator(model)"
|
text = "tf.keras.estimator.model_to_estimator(model)"
|
||||||
_, report, _, _ = self._upgrade(text)
|
_, report, _, _ = self._upgrade(text)
|
||||||
expected_info = "will save object-based checkpoints"
|
expected_info = "will save object-based checkpoints"
|
||||||
self.assertIn(expected_info, report)
|
self.assertIn(expected_info, report)
|
||||||
|
|
||||||
|
def test_keras_experimental_export_warning(self):
|
||||||
|
text = "tf.keras.experimental.export_saved_model"
|
||||||
|
_, report, _, _ = self._upgrade(text)
|
||||||
|
expected_info = "Please use model.save"
|
||||||
|
self.assertIn(expected_info, report)
|
||||||
|
|
||||||
|
|
||||||
class TestUpgradeFiles(test_util.TensorFlowTestCase):
|
class TestUpgradeFiles(test_util.TensorFlowTestCase):
|
||||||
|
|
||||||
def testInplace(self):
|
def testInplace(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user