Spec-Zone.ru › TensorFlow 1.15

tf.contrib.estimator.SavedModelEstimator

Создать Estimator из SavedModel.

Наследуется от: Estimator

tf.contrib.estimator.SavedModelEstimator(
    saved_model_dir, model_dir=None
)

Для этого класса поддерживаются только SavedModel, экспортированные с помощью tf.estimator.Estimator.experimental_export_all_saved_models() или tf.estimator.Estimator.export_saved_model().

Пример с tf.estimator.DNNClassifier:

Шаг 1: Создать и обучить DNNClassifier.

feature1 = tf.feature_column.embedding_column(
    tf.feature_column.categorical_column_with_vocabulary_list(
        key='feature1', vocabulary_list=('green', 'yellow')), dimension=1)
feature2 = tf.feature_column.numeric_column(key='feature2', default_value=0.0)

classifier = tf.estimator.DNNClassifier(
    hidden_units=[4,2], feature_columns=[feature1, feature2])

def input_fn():
  features = {'feature1': tf.constant(['green', 'green', 'yellow']),
              'feature2': tf.constant([3.5, 4.2, 6.1])}
  label = tf.constant([1., 0., 0.])
  return tf.data.Dataset.from_tensors((features, label)).repeat()

classifier.train(input_fn=input_fn, steps=10)

Шаг 2: Экспорт классификатора. Сначала создайте функции, которые определяют ожидаемые входные данные.

# During train and evaluation, both the features and labels should be defined.
supervised_input_receiver_fn = (
    tf.estimator.experimental.build_raw_supervised_input_receiver_fn(
        {'feature1': tf.placeholder(dtype=tf.string, shape=[None]),
         'feature2': tf.placeholder(dtype=tf.float32, shape=[None])},
        tf.placeholder(dtype=tf.float32, shape=[None])))

# During predict mode, expect to receive a `tf.Example` proto, so a parsing
# function is used.
serving_input_receiver_fn = (
    tf.estimator.export.build_parsing_serving_input_receiver_fn(
        tf.feature_column.make_parse_example_spec([feature1, feature2])))

Затем экспортируйте модель как SavedModel. Будет создана папка с отметкой времени (например /tmp/export_all/1234567890).

# Option 1: Save all modes (train, eval, predict)
export_dir = classifier.experimental_export_all_saved_models(
    '/tmp/export_all',
    {tf.estimator.ModeKeys.TRAIN: supervised_input_receiver_fn,
     tf.estimator.ModeKeys.EVAL: supervised_input_receiver_fn,
     tf.estimator.ModeKeys.PREDICT: serving_input_receiver_fn})

# Option 2: Only export predict mode
export_dir = classifier.export_saved_model(
    '/tmp/export_predict', serving_input_receiver_fn)

Шаг 3: Создать SavedModelEstimator из экспортированного SavedModel.

est = tf.estimator.experimental.SavedModelEstimator(export_dir)

# If all modes were exported, you can immediately evaluate and predict, or
# continue training. Otherwise only predict is available.
eval_results = est.evaluate(input_fn=input_fn, steps=1)
print(eval_results)

est.train(input_fn=input_fn, steps=20)

def predict_input_fn():
  example = tf.train.Example()
  example.features.feature['feature1'].bytes_list.value.extend(['yellow'])
  example.features.feature['feature2'].float_list.value.extend([1.])
  return {'inputs':tf.constant([example.SerializeToString()])}

predictions = est.predict(predict_input_fn)
print(next(predictions))
Аргументы
saved_model_dir Директория, содержащая SavedModel protobuf и подпапки.
model_dir Директория для сохранения новых контрольных точек во время обучения.
Исключения
NotImplementedError Если в конфигурации определена стратегия распределения. Этого не должно происходить, если SavedModelEstimator не является подклассом.
Атрибуты
config
export_savedmodel
model_dir
model_fn Возвращает model_fn, привязанную к self.params.
params

Методы

eval_dir

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

eval_dir(
    name=None
)

Показывает имя директории, куда сохраняются метрики оценки.

Аргументы
name Имя оценки, если пользователю нужно выполнить несколько оценок на разных наборах данных, например, на обучающих и тестовых данных. Метрики для разных оценок сохраняются в отдельных папках и отображаются отдельно в tensorboard.
Возвращает
Строка, представляющая путь к директории, содержащей метрики оценки.

evaluate

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

evaluate(
    input_fn, steps=None, hooks=None, checkpoint_path=None, name=None
)

Оценивает модель с использованием данных для оценки input_fn.

Для каждого шага вызывается input_fn, которое возвращает одну партию данных. Оценка выполняется до:

  • steps партий обработаны, или
  • input_fn возникает исключение конца ввода (tf.errors.OutOfRangeError или StopIteration).
Аргументы
input_fn Функция, которая строит входные данные для оценки. См. Предварительно сконструированные Estimators для получения дополнительной информации. Функция должна строить и возвращать один из следующих объектов: * Объект tf.data.Dataset: Выходы объекта Dataset должны быть кортежем (features, labels) с теми же ограничениями, что и ниже. * Кортеж (features, labels): где features – это tf.Tensor или словарь из имени признака типа строка в Tensor, а labels – это Tensor или словарь из имени метки типа строка в Tensor. Оба features и labels потребляются model_fn. Они должны соответствовать ожиданиям от входов model_fn.
steps Количество шагов, на которых оценивается модель. Если None, оценивается до тех пор, пока input_fn не вызовет исключение конца ввода.
hooks Список экземпляров подкласса tf.train.SessionRunHook. Используется для обратных вызовов внутри вызова оценки.
checkpoint_path Путь к конкретной контрольной точке для оценки. Если None, используется последняя контрольная точка в model_dir. Если в model_dir нет контрольных точек, оценка выполняется с только что инициализированными Variables вместо тех, которые восстановлены из контрольной точки.
name Имя оценки, если пользователю нужно выполнить несколько оценок на разных наборах данных, например, на обучающих и тестовых данных. Метрики для разных оценок сохраняются в отдельных папках и отображаются отдельно в tensorboard.
Возвращает
Словарь, содержащий метрики оценки, указанные в model_fn, с ключами по имени, а также запись global_step, которая содержит значение глобального шага, для которого была выполнена эта оценка. Для готовых estimators, словарь содержит loss (средняя потеря на мини-пакет) и average_loss (средняя потеря на образец). Готовые классификаторы также возвращают accuracy. Готовые регрессоры также возвращают label/mean и prediction/mean.
Исключения
ValueError Если steps <= 0.

experimental_export_all_saved_models

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

experimental_export_all_saved_models(
    export_dir_base, input_receiver_fn_map, assets_extra=None, as_text=False,
    checkpoint_path=None
)

Экспортирует SavedModel с tf.MetaGraphDefs для каждого запрошенного режима.

Для каждого режима, переданного через input_receiver_fn_map, этот метод строит новую графу, вызывая input_receiver_fn для получения признаков и меток Tensor. Затем этот метод вызывает Estimator's model_fn в переданном режиме, чтобы сгенерировать граф модели на основе этих признаков и меток, и восстанавливает заданную контрольную точку (или, если таковой нет, последнюю контрольную точку) в граф. Только один из режимов используется для сохранения переменных в SavedModel (порядок предпочтения: tf.estimator.ModeKeys.TRAIN, tf.estimator.ModeKeys.EVAL, затем tf.estimator.ModeKeys.PREDICT), так что до трех tf.MetaGraphDefs сохраняются с одним набором переменных в одной директории экспорта SavedModel.

Для переменных и tf.MetaGraphDefs, создается временная папка экспорта под export_dir_base, и в нее записывается SavedModel , содержащий tf.MetaGraphDef для заданного режима и его связанных сигнатур.

Для предсказания экспортированный MetaGraphDef предоставит по одному SignatureDef для каждого элемента словаря export_outputs , возвращенного model_fn, с использованием тех же ключей. Один из этих ключей всегда tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY, указывающий, какая подпись будет обслуживаться, когда запрос обслуживания не указывает ее. Для каждой подписи выходы предоставляются соответствующими объектами tf.estimator.export.ExportOutput, а входные данные всегда являются получателями ввода, предоставленными serving_input_receiver_fn.

Для обучения и оценки train_op хранится в дополнительном наборе, и потери, метрики и предсказания включаются в SignatureDef для рассматриваемого режима.

Дополнительные ресурсы могут быть записаны в SavedModel через аргумент assets_extra. Это должен быть словарь, где каждый ключ задает путь назначения (включая имя файла) относительно директории assets.extra. Соответствующее значение дает полный путь к исходному файлу, который нужно скопировать. Например, простой случай копирования одного файла без переименования задается как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.

Аргументы
export_dir_base Строка, содержащая директорию, в которой должны быть созданы временные поддиректории, содержащие экспортированные SavedModels.
input_receiver_fn_map Словарь из tf.estimator.ModeKeys к отображениям input_receiver_fn, где input_receiver_fn – это функция без аргументов, которая возвращает соответствующий подкласс InputReceiver.
assets_extra Словарь, определяющий, как заполнить директорию assets.extra в экспортированном SavedModel, или None если дополнительные ресурсы не нужны.
as_text Признак записи SavedModel прото в текстовом формате.
checkpoint_path Путь к контрольной точке для экспорта. Если None (по умолчанию), выбирается последняя контрольная точка, найденная в каталоге модели.
Возвращает
Путь к строке экспортированной директории.
Исключения
ValueError если какой-либо input_receiver_fn – None, не предоставлены export_outputs или не найдена контрольная точка.

export_saved_model

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

export_saved_model(
    export_dir_base, serving_input_receiver_fn, assets_extra=None, as_text=False,
    checkpoint_path=None, experimental_mode=ModeKeys.PREDICT
)

Экспортирует граф инференции как SavedModel в указанный каталог.

Подробное руководство см. в Использование SavedModel с Estimators.

Этот метод строит новый граф, сначала вызывая serving_input_receiver_fn для получения признаков Tensor, а затем вызывая Estimator этого model_fn для генерации графа модели на основе этих признаков. Он восстанавливает заданный контрольный пункт (или, при его отсутствии, самый последний контрольный пункт) в этот граф в новой сессии. Наконец, он создаёт каталог экспорта с отметкой времени в заданном export_dir_base, и записывает SavedModel в него, содержащий один tf.MetaGraphDef, сохранённый из этой сессии.

Экспортированный MetaGraphDef предоставит по одному SignatureDef для каждого элемента словаря export_outputs, возвращённого model_fn, используя те же ключи. Один из этих ключей всегда tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY, указывая, какая сигнатура будет использоваться при запросе обслуживания, если она не указана. Для каждой сигнатуры выходные данные предоставляются соответствующими tf.estimator.export.ExportOutput, а входные данные всегда — приёмниками входных данных, предоставляемыми serving_input_receiver_fn.

Дополнительные ресурсы могут быть записаны в SavedModel через аргумент assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение даёт полный путь исходного файла, который будет скопирован. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.

Параметр experimental_mode может использоваться для экспорта одного графа обучения/оценки/предсказания как SavedModel. См. experimental_export_all_saved_models для полного описания.

Аргументы
export_dir_base Строка, содержащая каталог, в котором создавать подкаталоги с отметкой времени, содержащие экспортированные SavedModelы.
serving_input_receiver_fn Функция, которая не принимает аргументов и возвращает tf.estimator.export.ServingInputReceiver или tf.estimator.export.TensorServingInputReceiver.
assets_extra Словарь, определяющий способ заполнения каталога assets.extra в экспортированном SavedModel, или None, если дополнительные ресурсы не требуются.
as_text Флаг записи протокола SavedModel в текстовом формате.
checkpoint_path Путь к контрольному пункту для экспорта. Если None (по умолчанию), выбирается самый последний контрольный пункт, найденный в каталоге модели.
experimental_mode Значение tf.estimator.ModeKeys, указывающее, какой режим будет экспортирован. Обратите внимание, что эта функция экспериментальная.
Возвращает
Строковый путь к экспортированному каталогу.
Исключения
ValueError если не указан serving_input_receiver_fn, не указаны export_outputs или не найден контрольный пункт.

get_variable_names

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

get_variable_names()

Возвращает список всех имён переменных в этой модели.

Возвращает
Список имён.
Исключения
ValueError Если Estimator ещё не создал контрольный пункт.

get_variable_value

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

get_variable_value(
    name
)

Возвращает значение переменной, заданной по имени.

Аргументы
name строка или список строк, имя тензора.
Возвращает
Массив NumPy - значение тензора.
Исключения
ValueError Если Estimator ещё не создал контрольный пункт.

latest_checkpoint

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

latest_checkpoint()

Находит имя файла последнего сохранённого контрольного пункта в model_dir.

Возвращает
Полный путь к последнему контрольному пункту или None , если контрольный пункт не был найден.

predict

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

predict(
    input_fn, predict_keys=None, hooks=None, checkpoint_path=None,
    yield_single_examples=True
)

Возвращает предсказания для заданных признаков.

Обратите внимание, что чередование двух выходных данных предсказания не работает. См.: вопрос/20506

Аргументы
input_fn Функция, которая строит признаки. Предсказание продолжается до тех пор, пока input_fn не вызовет исключение конца ввода (tf.errors.OutOfRangeError или StopIteration). См. Предельные оценщики для получения дополнительной информации. Функция должна строить и возвращать одно из следующего:
  • Объект tf.data.Dataset: Выходные данные объекта Dataset должны соответствовать ограничениям ниже.
  • признаки: tf.Tensor или словарь имён признаков к Tensor. Признаки потребляются model_fn. Они должны удовлетворять ожиданиям model_fn от входных данных.
  • Кортеж, в этом случае первая часть извлекается как признаки.
predict_keys список str, имя ключей для предсказания. Используется, если tf.estimator.EstimatorSpec.predictions является dict. Если predict_keys используется, остальная часть предсказаний будет отфильтрована из словаря. Если None, возвращает все.
hooks Список экземпляров подклассов tf.train.SessionRunHook. Используется для обратных вызовов внутри вызова предсказания.
checkpoint_path Путь к определённому контрольному пункту для предсказания. Если None, используется последний контрольный пункт в model_dir. Если в model_dir нет контрольных пунктов, предсказание выполняется с только что инициализированными Variables вместо восстановленных из контрольного пункта.
yield_single_examples Если False, возвращает всю партию, как возвращает model_fn вместо разбиения партии на отдельные элементы. Это полезно, если model_fn возвращает некоторые тензоры, первая размерность которых не равна размеру партии.

Возвращает:

Вычисленные значения тензоров predictions.

Исключения
ValueError Если длина партии предсказаний не совпадает и yield_single_examples равно True.
ValueError Если есть конфликт между predict_keys и predictions. Например, если predict_keys не равно None, но tf.estimator.EstimatorSpec.predictions не является dict.

train

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

train(
    input_fn, hooks=None, steps=None, max_steps=None, saving_listeners=None
)

Обучает модель с использованием обучающих данных input_fn.

Аргументы
input_fn Функция, предоставляющая входные данные для обучения в виде мини-пакетов. См. Предопределенные оценщики для получения дополнительной информации. Функция должна строить и возвращать один из следующих объектов:
  • Объект tf.data.Dataset: Выходы объекта Dataset должны быть кортежем (features, labels) с теми же ограничениями, что и ниже.
  • Кортеж (features, labels): где features является tf.Tensor или словарем с именами признаков в качестве строк и значениями Tensor, а labels является Tensor или словарем с именами меток в качестве строк и значениями Tensor. И features, и labels потребляются model_fn. Они должны соответствовать ожиданиям model_fn от входных данных.
hooks Список экземпляров подклассов tf.train.SessionRunHook. Используется для обратных вызовов внутри цикла обучения.
steps Количество шагов для обучения модели. Если None, обучение происходит бесконечно или до тех пор, пока input_fn не сгенерирует ошибку tf.errors.OutOfRange или исключение StopIteration. steps работает пошагово. Если вы вызовете train(steps=10) дважды, обучение произойдет в общей сложности на 20 шагах. Если OutOfRange или StopIteration возникнут в середине процесса, обучение остановится до достижения 20 шагов. Если вы не хотите пошагового поведения, установите max_steps вместо этого. Если установлено, max_steps должно быть None.
max_steps Общее количество шагов для обучения модели. Если None, обучение происходит бесконечно или до тех пор, пока input_fn не сгенерирует ошибку tf.errors.OutOfRange или исключение StopIteration. Если установлено, steps должно быть None. Если OutOfRange или StopIteration возникнут в середине, обучение остановится до достижения max_steps шагов. Два вызова train(steps=100) означают 200 итераций обучения. С другой стороны, два вызова train(max_steps=100) означают, что второй вызов не выполнит итерацию, так как первый вызов выполнил все 100 шагов.
saving_listeners список объектов CheckpointSaverListener. Используется для обратных вызовов, выполняемых непосредственно перед или после сохранения контрольных точек.
Возвращаемое значение
self, для цепочки вызовов.
Исключения
ValueError Если оба steps и max_steps не являются None.
ValueError Если либо steps или max_steps <= 0.

© 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/r1.15/api_docs/python/tf/contrib/estimator/SavedModelEstimator

Spec-Zone.ru

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