Spec-Zone.ru › TensorFlow 2.9

tf.keras.estimator.model_to_estimator

Просмотреть исходный код на GitHub

Создаёт экземпляр Estimator из заданной модели Keras.

tf.keras.estimator.model_to_estimator(
    keras_model=None,
    keras_model_path=None,
    custom_objects=None,
    model_dir=None,
    config=None,
    checkpoint_format='checkpoint',
    metric_names_map=None,
    export_outputs=None
)

Если вы используете инфраструктуру или другие инструменты, которые полагаются на Estimators, вы по-прежнему можете создать модель Keras и использовать model_to_estimator для преобразования модели Keras в Estimator для использования с последующими системами.

Пример использования см. в статье: Создание Estimators из моделей Keras.

Веса выборок:

Estimators, возвращаемые функцией model_to_estimator, сконфигурированы так, чтобы они могли обрабатывать веса выборок (аналогично keras_model.fit(x, y, sample_weights)).

Чтобы передать веса выборок во время обучения или оценки Estimator, первый элемент, возвращаемый функцией ввода, должен быть словарем со ключами features и sample_weights. Пример ниже:

keras_model = tf.keras.Model(...)
keras_model.compile(...)

estimator = tf.keras.estimator.model_to_estimator(keras_model)

def input_fn():
  return dataset_ops.Dataset.from_tensors(
      ({'features': features, 'sample_weights': sample_weights},
       targets))

estimator.train(input_fn, steps=1)

Пример с настраиваемой подписью экспорта:

inputs = {'a': tf.keras.Input(..., name='a'),
          'b': tf.keras.Input(..., name='b')}
outputs = {'c': tf.keras.layers.Dense(..., name='c')(inputs['a']),
           'd': tf.keras.layers.Dense(..., name='d')(inputs['b'])}
keras_model = tf.keras.Model(inputs, outputs)
keras_model.compile(...)
export_outputs = {'c': tf.estimator.export.RegressionOutput,
                  'd': tf.estimator.export.ClassificationOutput}

estimator = tf.keras.estimator.model_to_estimator(
    keras_model, export_outputs=export_outputs)

def input_fn():
  return dataset_ops.Dataset.from_tensors(
      ({'features': features, 'sample_weights': sample_weights},
       targets))

estimator.train(input_fn, steps=1)
Примечание: Мы не поддерживаем создание взвешенных метрик в Keras и их преобразование в взвешенные метрики в API Estimator, используя model_to_estimator. Вам нужно будет создать эти метрики непосредственно в спецификации estimator, используя функцию add_metrics.

Чтобы настроить имена Estimator eval_metric_ops, вы можете передать словарь metric_names_map, сопоставляющий имена метрик вывода модели Keras с настраиваемыми именами следующим образом:

input_a = tf.keras.layers.Input(shape=(16,), name='input_a')
input_b = tf.keras.layers.Input(shape=(16,), name='input_b')
dense = tf.keras.layers.Dense(8, name='dense_1')
interm_a = dense(input_a)
interm_b = dense(input_b)
merged = tf.keras.layers.concatenate([interm_a, interm_b], name='merge')
output_a = tf.keras.layers.Dense(3, activation='softmax', name='dense_2')(
        merged)
output_b = tf.keras.layers.Dense(2, activation='softmax', name='dense_3')(
        merged)
keras_model = tf.keras.models.Model(
    inputs=[input_a, input_b], outputs=[output_a, output_b])
keras_model.compile(
    loss='categorical_crossentropy',
    optimizer='rmsprop',
    metrics={
        'dense_2': 'categorical_accuracy',
        'dense_3': 'categorical_accuracy'
    })

metric_names_map = {
    'dense_2_categorical_accuracy': 'acc_1',
    'dense_3_categorical_accuracy': 'acc_2',
}
keras_est = tf.keras.estimator.model_to_estimator(
    keras_model=keras_model,
    config=config,
    metric_names_map=metric_names_map)
Аргументы
keras_model Объект скомпилированной модели Keras. Этот аргумент взаимоисключающий с keras_model_path. model_fn Estimator использует структуру модели для клонирования модели. По умолчанию None.
keras_model_path Путь к сохранённой на диске скомпилированной модели Keras в формате HDF5, которая может быть сгенерирована методом save() модели Keras. Этот аргумент взаимоисключающий с keras_model. По умолчанию None.
custom_objects Словарь для клонирования настраиваемых объектов. Используется с классами, которые не являются частью этого пакета pip. Например, если пользователь поддерживает класс relu6, который наследуется от tf.keras.layers.Layer, то передайте custom_objects={'relu6': relu6}. По умолчанию None.
model_dir Каталог для сохранения параметров модели Estimator, графа, файлов сводки для TensorBoard и т. д. Если не указано, будет создан каталог с tempfile.mkdtemp
config RunConfig для конфигурации Estimator. Позволяет настроить вещи в model_fn на основе конфигурации, например num_ps_replicas, или model_dir. По умолчанию None. Если оба config.model_dir и аргумент model_dir (выше) указаны, то аргумент model_dir имеет приоритет.
checkpoint_format Устанавливает формат контрольной точки, сохраняемой Estimator во время обучения. Может быть saver или checkpoint, в зависимости от того, нужно ли сохранять контрольные точки из tf.compat.v1.train.Saver или tf.train.Checkpoint. По умолчанию checkpoint. Estimators используют контрольные точки на основе имен, в то время как модели Keras используют контрольные точки на основе объектов из tf.train.Checkpoint. В настоящее время сохранение контрольных точек на основе объектов из model_to_estimator поддерживается только для моделей Functional и Sequential. По умолчанию 'checkpoint'.
metric_names_map Необязательный словарь, сопоставляющий имена метрик вывода модели Keras с настраиваемыми именами. Это может быть использовано для переопределения значений по умолчанию для имен метрик вывода модели Keras в случае модели с несколькими выводами и для предоставления настраиваемых имен для eval_metric_ops в Estimator. Имена метрик модели Keras можно получить, используя model.metrics_names, исключая любые метрики потерь, такие как общая потеря и потери вывода. Например, если ваша модель Keras имеет два выхода out_1 и out_2, с потерей mse и метрикой acc, то model.metrics_names будет ['loss', 'out_1_loss', 'out_2_loss', 'out_1_acc', 'out_2_acc']. Имена метрик модели, исключая метрики потерь, будут ['out_1_acc', 'out_2_acc'].
export_outputs Необязательный словарь. Это может быть использовано для переопределения значений по умолчанию для выходов модели Keras в случае многовыходной модели и для предоставления настраиваемых имён для export_outputs в tf.estimator.EstimatorSpec. По умолчанию None, что эквивалентно {'serving_default': tf.estimator.export.PredictOutput}. Если не None, ключи должны совпадать с ключами model.output_names. Словарь {name: output}, где:
  • имя: произвольное имя для этого выхода.
  • выход: класс ExportOutput, такой как ClassificationOutput, RegressionOutput, или PredictOutput. Модели с единственным выходом должны указать только одну запись в этом словаре. Модели с несколькими выходами должны указать одну запись для каждого выхода, одна из которых должна быть названа с помощью tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY Если запись не предоставлена, будет создано отображение по умолчанию PredictOutput в predictions.
Возвращаемое значение
Estimator из заданной модели Keras.
Исключения
ValueError Если ни keras_model, ни keras_model_path не были заданы.
ValueError Если и keras_model, и keras_model_path были заданы.
ValueError Если keras_model_path является URI GCS.
ValueError Если модель keras не была скомпилирована.
ValueError Если был задан некорректный формат checkpoint_format.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/estimator/model_to_estimator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API