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:
Katherine Wu 2019-10-22 13:27:33 -07:00 committed by TensorFlower Gardener
parent 5022124b9e
commit f3969a8df1
6 changed files with 39 additions and 15 deletions

View File

@ -64,7 +64,7 @@ sequential = LazyLoader(
date=None,
instructions=('Please use `model.save(..., save_format="tf")` or '
'`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,
saved_model_path,
custom_objects=None,
@ -374,7 +374,7 @@ def _assert_same_non_optimizer_objects(model, model_graph, clone, clone_graph):
date=None,
instructions=('The experimental save and load functions have been '
'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):
"""Loads a keras Model from a SavedModel created by `export_saved_model()`.

View File

@ -32,14 +32,6 @@ tf_module {
name: "WideDeepModel"
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 {
name: "terminate_keras_multiprocessing_pools"
argspec: "args=[\'grace_period\', \'use_sigkill\'], varargs=None, keywords=None, defaults=[\'0.1\', \'False\'], "

View File

@ -192,9 +192,9 @@ manual_symbol_renames = {
"tf.contrib.util.constant_value":
"tf.get_static_value",
"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.keras.experimental.export_saved_model",
"tf.compat.v1.keras.experimental.export_saved_model",
"tf.contrib.rnn.RNNCell":
"tf.compat.v1.nn.rnn_cell.RNNCell",
"tf.contrib.rnn.LSTMStateTuple":

View File

@ -514,6 +514,10 @@ renames = {
'tf.compat.v1.keras.backend.get_session',
'tf.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.compat.v1.keras.layers.CuDNNGRU',
'tf.keras.layers.CuDNNLSTM':

View File

@ -862,6 +862,14 @@ class TFAPIChangeSpec(ast_edits.NoUpdateSpec):
" and tf.distribute.experimental.CentralStorageStrategy (one machine). "
"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
# replaced by function name.
# 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,
"tf.contrib.estimator.regression_head":
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":
contrib_summary_comment,
"tf.contrib.summary.audio":
@ -1009,6 +1021,10 @@ class TFAPIChangeSpec(ast_edits.NoUpdateSpec):
"checkpoints (format used by `keras_model.save_weights` and "
"`keras_model.load_weights`) by default in 2.0. To continue "
"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":
initializers_no_dtype_comment,
"tf.keras.initializers.zeros":

View File

@ -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.load_keras_model(saved_model_path)\n")
expected_text = (
"tf.keras.experimental.export_saved_model(model, './saved_models')\n"
"tf.keras.experimental.load_from_saved_model(saved_model_path)\n")
_, unused_report, unused_errors, new_text = self._upgrade(text)
"tf.compat.v1.keras.experimental.export_saved_model(model, "
"'./saved_models')\ntf.compat.v1.keras.experimental."
"load_from_saved_model(saved_model_path)\n"
)
_, report, unused_errors, new_text = self._upgrade(text)
self.assertEqual(new_text, expected_text)
expected_info = "Please use model.save"
self.assertIn(expected_info, report)
def testStatelessMultinomial(self):
text = (
@ -2256,12 +2260,20 @@ def _log_prob(self, x):
result_a, result_b = results[0], results[1]
self.assertEqual(result_a[3], expected_text_a)
self.assertEqual(result_b[3], expected_text_b)
def test_model_to_estimator_checkpoint_warning(self):
text = "tf.keras.estimator.model_to_estimator(model)"
_, report, _, _ = self._upgrade(text)
expected_info = "will save object-based checkpoints"
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):
def testInplace(self):