tf.compat.v2.estimator.LinearEstimator
Оценщик для линейных моделей TensorFlow с заданным пользователем заголовком.
Наследуется от: Estimator
tf.compat.v2.estimator.LinearEstimator(
head, feature_columns, model_dir=None, optimizer='Ftrl', config=None,
sparse_combiner='sum'
)
Пример:
categorical_column_a = categorical_column_with_hash_bucket(...)
categorical_column_b = categorical_column_with_hash_bucket(...)
categorical_feature_a_x_categorical_feature_b = crossed_column(...)
# Estimator using the default optimizer.
estimator = LinearEstimator(
head=tf.contrib.estimator.multi_label_head(n_classes=3),
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b])
# Or estimator using an optimizer with a learning rate decay.
estimator = LinearEstimator(
head=tf.contrib.estimator.multi_label_head(n_classes=3),
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b],
optimizer=lambda: tf.keras.optimizers.Ftrl(
learning_rate=tf.exponential_decay(
learning_rate=0.1,
global_step=tf.get_global_step(),
decay_steps=10000,
decay_rate=0.96))
# Or estimator using the FTRL optimizer with regularization.
estimator = LinearEstimator(
head=tf.contrib.estimator.multi_label_head(n_classes=3),
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b])
optimizer=tf.keras.optimizers.Ftrl(
learning_rate=0.1,
l1_regularization_strength=0.001
))
def input_fn_train:
# Returns tf.data.Dataset of (x, y) tuple where y represents label's class
# index.
pass
def input_fn_eval:
# Returns tf.data.Dataset of (x, y) tuple where y represents label's class
# index.
pass
def input_fn_predict:
# Returns tf.data.Dataset of (x, None) tuple.
pass
estimator.train(input_fn=input_fn_train, steps=100)
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
predictions = estimator.predict(input_fn=input_fn_predict)
Вход train и evaluate должен иметь следующие особенности, в противном случае произойдёт KeyError:
- если
weight_columnнеNone, признак сkey=weight_column, значение которого являетсяTensor. - для каждого
columnвfeature_columns:- если
columnявляется_CategoricalColumn, признак сkey=column.name, значение которого являетсяSparseTensor. - если
columnявляется_WeightedCategoricalColumn, два признака: первый сkeyименем столбца, второй сkeyименем столбца веса. Значение обоих признаков должно бытьSparseTensor. - если
columnявляется_DenseColumn, признак сkey=column.name, значение которого являетсяTensor.
- если
Функция потерь и предсказанный результат определяются заданным заголовком.
| Аргументы | |
|---|---|
head | Экземпляр _Head, созданный с помощью метода, такого как tf.contrib.estimator.multi_label_head. |
feature_columns | Итерируемый объект, содержащий все столбцы признаков, используемые моделью. Все элементы набора должны быть экземплярами классов, производными от FeatureColumn. |
model_dir | Директория для сохранения параметров модели, графа и т.д. Это также можно использовать для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохранённой модели. |
optimizer | Экземпляр tf.Optimizer, используемый для обучения модели. Также может быть строкой (одной из 'Adagrad', 'Adam', 'Ftrl', 'RMSProp', 'SGD') или вызываемым объектом. По умолчанию используется оптимизатор FTRL. |
config | Объект RunConfig для настройки параметров выполнения. |
sparse_combiner | Строка, определяющая способ уменьшения, если категориальный столбец многозначный. Одна из "mean", "sqrtn", "sum" — это эффективные способы нормирования на уровне примера, что может быть полезно для признаков «мешок слов». Более подробную информацию см. в tf.feature_column.linear_model. |
Совместимость с Eager
Оценщики могут использоваться при включённом режиме eager execution. Обратите внимание, что input_fn и все хуки выполняются внутри контекста графа, поэтому их необходимо написать так, чтобы они были совместимы с режимом графа. Обратите внимание, что код input_fn с использованием tf.data обычно работает в режимах графа и eager.
| Атрибуты | |
|---|---|
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 | Функция, которая строит входные данные для оценки. См. Premade 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 , содержащая значение глобального шага, на котором была выполнена эта оценка. Для готовых оценщиков словарь содержит 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 в переданном режиме, чтобы сгенерировать граф модели на основе этих признаков и меток, и восстанавливает заданную контрольную точку (или, если её нет, последнюю контрольную точку) в графе. Только один из режимов используется для сохранения переменных в 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 | Строка, содержащая директорию, в которой будут созданы временные поддиректории с отметками времени, содержащие экспортированные SavedModelы. |
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's 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.ExportOutputs, а входные данные всегда являются входными приемниками, предоставленными 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 | Если модель ещё не создала чекпоинт. |
get_variable_value
get_variable_value(
name
)
Возвращает значение переменной по имени.
| Аргументы | |
|---|---|
name | Строка или список строк, имя тензора. |
| Возвращает | |
|---|---|
| Массив NumPy — значение тензора. |
| Исключения | |
|---|---|
ValueError | Если модель ещё не создала чекпоинт. |
latest_checkpoint
latest_checkpoint()
Находит имя файла последнего сохранённого чекпоинта в model_dir.
| Возвращает | |
|---|---|
Полный путь к последнему чекпоинту или None если чекпоинт не был найден. |
predict
predict(
input_fn, predict_keys=None, hooks=None, checkpoint_path=None,
yield_single_examples=True
)
Возвращает прогнозы для заданных признаков.
Обратите внимание, что переключение двух выходных данных predict не работает. См.: вопрос/20506
| Аргументы | |
|---|---|
input_fn | Функция, которая строит признаки. Прогнозирование продолжается до тех пор, пока input_fn не вызовет исключение конца входных данных (tf.errors.OutOfRangeError или StopIteration). Смотрите Предварительно подготовленные оценители для получения дополнительной информации. Функция должна создавать и возвращать одно из следующего:
|
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 возвращает некоторые тензоры, первая размерность которых не равна размеру партии. |
data-text="Возвращает:" id="yields" tabindex="0">Возвращает:
Вычисленные значения 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 | Функция, которая предоставляет данные для обучения в виде мини-пакетов. Подробнее см. Предварительно созданные оценщики. Функция должна создавать и возвращать один из следующих объектов:
|
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/compat/v2/estimator/LinearEstimator