from tensorflow.python.saved_model import loader_impl from tensorflow.python.saved_model import nested_structure_coder from tensorflow.python.saved_model import revived_types from tensorflow.python.training.tracking import base as trackable from tensorflow.python.training.tracking import data_structures from tensorflow.python.training.tracking.tracking import delete_tracking from tensorflow.python.util import compat from tensorflow.python.util import nest # To avoid circular dependencies between keras/engine and keras/saving, # code in keras/saving must delay imports. # TODO(b/134426265): Switch back to single-quotes to match the rest of the file # once the issue with copybara is fixed. # pylint:disable=g-inconsistent-quotes models_lib = LazyLoader("models_lib", globals(), "tensorflow.python.keras.models") base_layer = LazyLoader( "base_layer", globals(), "tensorflow.python.keras.engine.base_layer") layers_module = LazyLoader( "layers_module", globals(), "tensorflow.python.keras.layers") input_layer = LazyLoader( "input_layer", globals(), "tensorflow.python.keras.engine.input_layer") functional_lib = LazyLoader( "functional_lib", globals(), "tensorflow.python.keras.engine.functional") training_lib = LazyLoader( "training_lib", globals(), "tensorflow.python.keras.engine.training")
from tensorflow.python.keras.utils.io_utils import ask_to_proceed_with_overwrite from tensorflow.python.ops import variables as variables_module from tensorflow.python.platform import tf_logging as logging # pylint: disable=g-import-not-at-top try: import h5py HDF5_OBJECT_HEADER_LIMIT = 64512 except ImportError: h5py = None # pylint: enable=g-import-not-at-top # TODO(b/134426265): Switch back to single-quotes to match the rest of the file # once the issue with copybara is fixed. # pylint:disable=g-inconsistent-quotes sequential_lib = LazyLoader("sequential_lib", globals(), "tensorflow.python.keras.engine.sequential") # pylint:enable=g-inconsistent-quotes def save_model_to_hdf5(model, filepath, overwrite=True, include_optimizer=True): """Saves a model to a HDF5 file. The saved model contains: - the model's configuration (topology) - the model's weights - the model's optimizer's state (if any) Thus the saved model can be reinstantiated in
from __future__ import print_function import itertools import types from tensorflow.python.eager import context from tensorflow.python.keras import backend as K from tensorflow.python.keras.engine import base_layer_utils from tensorflow.python.keras.utils import control_flow_util from tensorflow.python.keras.utils import layer_utils from tensorflow.python.keras.utils import tf_inspect from tensorflow.python.keras.utils.generic_utils import LazyLoader from tensorflow.python.util import tf_decorator # pylint:disable=g-inconsistent-quotes training_lib = LazyLoader("training_lib", globals(), "tensorflow.python.keras.engine.training") # pylint:enable=g-inconsistent-quotes def use_wrapped_call(layer, call_fn, default_training_value=None, return_method=False): """Creates fn that adds the losses returned by call_fn & returns the outputs. Args: layer: A Keras layer object call_fn: tf.function that takes layer inputs (and possibly a training arg), and returns a tuple of (outputs, list of losses). default_training_value: Default value of the training kwarg. If `None`, the default is `K.learning_phase()`.
from tensorflow.python.saved_model import constants from tensorflow.python.saved_model import save as save_lib from tensorflow.python.saved_model import utils_impl as saved_model_utils from tensorflow.python.training import saver as saver_lib from tensorflow.python.training.tracking import graph_view from tensorflow.python.util import compat from tensorflow.python.util import nest from tensorflow.python.util.tf_export import keras_export # To avoid circular dependencies between keras/engine and keras/saving, # code in keras/saving must delay imports. # TODO(b/134426265): Switch back to single-quotes to match the rest of the file # once the issue with copybara is fixed. # pylint:disable=g-inconsistent-quotes metrics_lib = LazyLoader("metrics_lib", globals(), "tensorflow.python.keras.metrics") models_lib = LazyLoader("models_lib", globals(), "tensorflow.python.keras.models") sequential = LazyLoader( "sequential", globals(), "tensorflow.python.keras.engine.sequential") # pylint:enable=g-inconsistent-quotes @keras_export(v1=['keras.experimental.export_saved_model']) def export_saved_model(model, saved_model_path, custom_objects=None, as_text=False, input_signature=None, serving_only=False):
from tensorflow.python.keras.utils import tf_inspect from tensorflow.python.keras.utils import version_utils from tensorflow.python.keras.utils.generic_utils import LazyLoader from tensorflow.python.platform import tf_logging as logging from tensorflow.python.training.tracking import base as trackable from tensorflow.python.training.tracking import data_structures from tensorflow.python.util import nest from tensorflow.python.util import tf_decorator # To avoid circular dependencies between keras/engine and keras/saving, # code in keras/saving must delay imports. # TODO(b/134426265): Switch back to single-quotes to match the rest of the file # once the issue with copybara is fixed. # pylint:disable=g-inconsistent-quotes base_layer = LazyLoader("base_layer", globals(), "tensorflow.python.keras.engine.base_layer") metrics = LazyLoader("metrics", globals(), "tensorflow.python.keras.metrics") input_layer = LazyLoader("input_layer", globals(), "tensorflow.python.keras.engine.input_layer") training_lib = LazyLoader("training_lib", globals(), "tensorflow.python.keras.engine.training") sequential_lib = LazyLoader("sequential_lib", globals(), "tensorflow.python.keras.engine.sequential") # pylint:enable=g-inconsistent-quotes def should_skip_serialization(layer): """Skip serializing extra objects and functions if layer inputs aren't set.""" saved_model_input_spec_set = ( isinstance(layer, training_lib.Model) and layer._saved_model_inputs_spec is not None) # pylint: disable=protected-access
from tensorflow.core.framework import versions_pb2 from tensorflow.python.keras import backend as K from tensorflow.python.keras.protobuf import saved_metadata_pb2 from tensorflow.python.keras.saving import saving_utils from tensorflow.python.keras.saving.saved_model import constants from tensorflow.python.keras.saving.saved_model import save_impl from tensorflow.python.keras.saving.saved_model import utils from tensorflow.python.keras.utils.generic_utils import LazyLoader from tensorflow.python.keras.utils.io_utils import ask_to_proceed_with_overwrite from tensorflow.python.platform import gfile from tensorflow.python.saved_model import save as save_lib # To avoid circular dependencies between keras/engine and keras/saving, # code in keras/saving must delay imports. base_layer = LazyLoader("base_layer", globals(), "tensorflow.python.keras.engine.base_layer") training_lib = LazyLoader("training_lib", globals(), "tensorflow.python.keras.engine.training") def save(model, filepath, overwrite, include_optimizer, signatures=None, options=None, save_traces=True): """Saves a model as a SavedModel to the filepath. Args: model: Keras model instance to be saved.
# limitations under the License. # ============================================================================== # pylint: disable=protected-access """Utilities for Keras classes with v1 and v2 versions.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function from tensorflow.python.eager import context from tensorflow.python.framework import ops from tensorflow.python.keras.utils.generic_utils import LazyLoader # TODO(b/134426265): Switch back to single-quotes once the issue # with copybara is fixed. # pylint: disable=g-inconsistent-quotes training = LazyLoader("training", globals(), "tensorflow.python.keras.engine.training") training_v1 = LazyLoader("training_v1", globals(), "tensorflow.python.keras.engine.training_v1") base_layer = LazyLoader("base_layer", globals(), "tensorflow.python.keras.engine.base_layer") base_layer_v1 = LazyLoader("base_layer_v1", globals(), "tensorflow.python.keras.engine.base_layer_v1") callbacks = LazyLoader("callbacks", globals(), "tensorflow.python.keras.callbacks") callbacks_v1 = LazyLoader("callbacks_v1", globals(), "tensorflow.python.keras.callbacks_v1") # pylint: enable=g-inconsistent-quotes class ModelVersionSelector(object):
""" from __future__ import absolute_import from __future__ import division from __future__ import print_function from tensorflow.python.eager import def_function from tensorflow.python.keras.saving.saved_model import constants from tensorflow.python.keras.utils.generic_utils import LazyLoader from tensorflow.python.training.tracking import base as trackable from tensorflow.python.training.tracking.tracking import AutoTrackable # TODO(b/134426265): Switch back to single-quotes to match the rest of the file # once the issue with copybara is fixed. # pylint:disable=g-inconsistent-quotes base_layer = LazyLoader( "base_layer", globals(), "tensorflow.python.keras.engine.base_layer") training_lib = LazyLoader( "training_lib", globals(), "tensorflow.python.keras.engine.training") metrics = LazyLoader("metrics", globals(), "tensorflow.python.keras.metrics") recurrent = LazyLoader( "recurrent", globals(), "tensorflow.python.keras.layers.recurrent") # pylint:enable=g-inconsistent-quotes class SerializedAttributes(object): """Class that tracks and validates all serialization attributes.