tf.estimator.LinearEstimator
| Просмотреть исходный код на GitHub |
Оценщик для линейных моделей TensorFlow с заданным пользователем заголовком.
Наследуется от: Estimator, Estimator
tf.estimator.LinearEstimator(
head,
feature_columns,
model_dir=None,
optimizer='Ftrl',
config=None,
sparse_combiner='sum',
warm_start_from=None
)
Пример:
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 = tf.estimator.LinearEstimator(
head=tf.estimator.MultiLabelHead(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 = tf.estimator.LinearEstimator(
head=tf.estimator.MultiLabelHead(n_classes=3),
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b],
optimizer=lambda: tf.keras.optimizers.Ftrl(
learning_rate=tf.compat.v1.train.exponential_decay(
learning_rate=0.1,
global_step=tf.compat.v1.train.get_global_step(),
decay_steps=10000,
decay_rate=0.96))
# Or estimator using the FTRL optimizer with regularization.
estimator = tf.estimator.LinearEstimator(
head=tf.estimator.MultiLabelHead(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, чьёvalueявляетсяSparseTensor. - если
columnявляетсяWeightedCategoricalColumn, два признака: первый сkeyименем столбца id, второй сkeyименем столбца weight. Оба признака должны иметьvalue, являющеесяSparseTensor. - если
columnявляетсяDenseColumn, признак сkey=column.name, чьёvalueявляетсяTensor.
- если
Функция потерь и предсказанный вывод определяются заданным заголовком.
| Аргументы | |
|---|---|
head | Экземпляр Head, созданный с помощью метода, такого как tf.estimator.MultiLabelHead. |
feature_columns | Итерируемый объект, содержащий все используемые моделью столбцы признаков. Все элементы должны быть экземплярами классов, производными от FeatureColumn. |
model_dir | Директория для сохранения параметров модели, графа и т.д. Также может использоваться для загрузки контрольных точек из каталога в оценщик для продолжения обучения ранее сохранённой модели. |
optimizer | Экземпляр tf.keras.optimizers.* для обучения модели. Также может быть строкой ('Adagrad', 'Adam', 'Ftrl', 'RMSProp', 'SGD') или вызываемой функцией. По умолчанию оптимизатор FTRL. |
config | Объект RunConfig для конфигурирования настроек выполнения. |
sparse_combiner | Строка, определяющая способ уменьшения, если категориальный столбец многозначен. Одно из значений "mean", "sqrtn", "sum" — это эффективные способы нормирования на уровне примера, что может быть полезно для признаков "мешок слов". Для получения дополнительной информации см. tf.feature_column.linear_model. |
warm_start_from | Путь к файлу контрольной точки для предварительной инициализации или объект WarmStartSettings для полной конфигурации предварительной инициализации. Если указан строковый путь, а не WarmStartSettings, все веса и смещения предварительно инициализируются, и предполагается, что словари и имена тензоров не изменены. |
| Атрибуты | |
|---|---|
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 | Функция, которая строит входные данные для оценки. См. Предопределённые оценщики для получения дополнительной информации. Функция должна строить и возвращать один из следующих объектов:
|
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'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 | Строка, содержащая каталог, в котором нужно создать временные подкаталоги с экспортированными 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 см. в Использование формата SavedModel.
Этот метод строит новый график, сначала вызвав serving_input_receiver_fn для получения признаков Tensor, а затем вызвав Estimator этого Estimator сгенерировать график модели на основе этих признаков. Он восстанавливает заданную контрольную точку (или, если её нет, последнюю контрольную точку) в этот график в новой сессии. Наконец, он создаёт временный каталог экспорта ниже указанного 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 может быть использован для экспорта одного графика train/eval/predict как 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
)
Возвращает предсказания для заданных признаков.
Обратите внимание, что интерливирование двух результатов предсказания не работает. См.: issue/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 возвращает некоторые тензоры, первая размерность которых не равна размеру партии. |
| Возвращаемые значения | |
|---|---|
Оценённые значения тензоров 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 . |
совместимость с eager execution
Оценщики могут использоваться при включенном режиме eager execution. Обратите внимание, что input_fn и все хуки выполняются внутри контекста графа, поэтому они должны быть написаны так, чтобы быть совместимыми с режимом графа. Обратите внимание, что код input_fn , использующий tf.data, как правило, работает в режимах графа и eager.
© 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/estimator/LinearEstimator