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
)
Если вы используете инфраструктуру или другие инструменты, которые полагаются на оценщики, вы по-прежнему можете создать модель Keras и использовать model_to_estimator для преобразования модели Keras в оценщик для использования с системами последующей обработки.
Пример использования см. в разделе: Создание оценщиков из моделей Keras.
Веса выборок:
Оценщики, возвращаемые model_to_estimator настроены так, чтобы они могли обрабатывать веса выборок (аналогично keras_model.fit(x, y, sample_weights)).
Чтобы передать веса выборок во время обучения или оценки оценщика, первым элементом, возвращаемым функцией ввода, должен быть словарь с ключами 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 оценщиков с использованиемmodel_to_estimator. Вы должны создать эти метрики непосредственно в спецификации оценщика с использованием функцииadd_metrics.
Чтобы настроить имена оценщика 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 использует структуру модели для клонирования модели. По умолчанию 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 | Устанавливает формат контрольной точки, сохраняемой оценщиком во время обучения. Может быть saver или checkpoint, в зависимости от того, следует ли сохранять контрольные точки из tf.compat.v1.train.Saver или tf.train.Checkpoint. По умолчанию checkpoint. Оценщики используют контрольные точки с основанным на имени способом, а модели Keras используют контрольные точки на основе объекта из tf.train.Checkpoint. В настоящее время сохранение контрольных точек на основе объекта из model_to_estimator поддерживается только функциональными и последовательными моделями. По умолчанию 'checkpoint'. |
metric_names_map | Необязательный словарь, сопоставляющий имена метрик вывода модели Keras с настраиваемыми именами. Это можно использовать для переопределения значений по умолчанию для имён метрик вывода модели Keras в случае модели с несколькими выводами и для предоставления настраиваемых имён для eval_metric_ops в оценщике. Имена метрик модели 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}, где:
|
| Возвращаемое значение | |
|---|---|
| Оценщик, созданный на основе заданной модели Keras. |
| Исключения | |
|---|---|
ValueError | Если ни keras_model, ни keras_model_path не были заданы. |
ValueError | Если оба keras_model и keras_model_path были заданы. |
ValueError | Если keras_model_path является URI GCS. |
ValueError | Если модель keras не скомпилирована. |
ValueError | Если был указан неверный формат контрольной точки. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/estimator/model_to_estimator