tf.estimator.LinearClassifier
| Просмотреть исходный код на GitHub |
Модель линейного классификатора.
Наследуется от: Estimator, Estimator
tf.estimator.LinearClassifier(
feature_columns,
model_dir=None,
n_classes=2,
weight_column=None,
label_vocabulary=None,
optimizer='Ftrl',
config=None,
warm_start_from=None,
loss_reduction=tf.losses.Reduction.SUM_OVER_BATCH_SIZE,
sparse_combiner='sum'
)
Обучает линейную модель для классификации экземпляров в один из нескольких возможных классов. При количестве возможных классов 2, это бинарная классификация.
Пример:
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.LinearClassifier(
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b])
# Or estimator using the FTRL optimizer with regularization.
estimator = tf.estimator.LinearClassifier(
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
))
# Or estimator using an optimizer with a learning rate decay.
estimator = tf.estimator.LinearClassifier(
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 with warm-starting from a previous checkpoint.
estimator = tf.estimator.LinearClassifier(
feature_columns=[categorical_column_a,
categorical_feature_a_x_categorical_feature_b],
warm_start_from="/path/to/checkpoint/dir")
# Input builders
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)
metrics = estimator.evaluate(input_fn=input_fn_eval)
predictions = estimator.predict(input_fn=input_fn_predict)
Вход train и evaluate должен иметь следующие особенности, в противном случае возникнет KeyError:
- если
weight_columnне являетсяNone, признак сkey=weight_column, значение которого являетсяTensor. - для каждого
columnвfeature_columns:- если
columnявляетсяSparseColumn, признак сkey=column.nameзначениемvalueSparseTensor. - если
columnявляетсяWeightedSparseColumn, два признака: первый сkeyименем столбца идентификатора, второй сkeyименем столбца веса. Значение обоих признаков должно бытьSparseTensor. - если
columnявляетсяRealValuedColumn, признак сkey=column.name, значение которого являетсяTensor.
- если
Функция потерь рассчитывается с использованием софтмакс-перекрестной энтропии.
| Аргументы | |
|---|---|
feature_columns | Итерируемый набор, содержащий все столбцы признаков, используемые моделью. Все элементы набора должны быть экземплярами классов, производных от FeatureColumn. |
model_dir | Директория для сохранения параметров модели, графа и т. д. Это также можно использовать для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохраненной модели. |
n_classes | Количество классов меток. По умолчанию — бинарная классификация. Обратите внимание, что метки классов — это целые числа, представляющие индекс класса (т. е. значения от 0 до n_classes-1). Для произвольных значений меток (например, строковых меток) сначала преобразуйте их в индексы классов. |
weight_column | Строка или _NumericColumn, созданная с помощью tf.feature_column.numeric_column, определяющая столбец признаков, представляющий веса. Используется для понижения или повышения весов примеров во время обучения. Умножается на потери примера. Если это строка, она используется в качестве ключа для извлечения тензора весов из features. Если это _NumericColumn, сырой тензор извлекается по ключу weight_column.key, а затем применяется weight_column.normalizer_fn для получения тензора весов. |
label_vocabulary | Список строк, представляющих возможные значения меток. Если указано, метки должны быть строкового типа и иметь любое значение в label_vocabulary. Если не указано, это означает, что метки уже закодированы как целые или плавающие числа в интервале [0, 1] для n_classes=2 и закодированы как целые значения в {0, 1,..., n_classes-1} для n_classes>2. Также будут ошибки, если словарь не предоставлен, а метки — строковые. |
optimizer | Экземпляр tf.keras.optimizers.* или tf.estimator.experimental.LinearSDCA, используемый для обучения модели. Также может быть строкой (одна из 'Adagrad', 'Adam', 'Ftrl', 'RMSProp', 'SGD') или вызываемым объектом. По умолчанию используется оптимизатор FTRL. |
config | Объект RunConfig для настройки параметров выполнения. |
warm_start_from | Путь к файлу контрольной точки для начальной загрузки, или объект WarmStartSettings для полной настройки начальной загрузки. Если указан строковый путь вместо объекта WarmStartSettings, все веса и смещения загружаются, и предполагается, что словари и имена тензоров не изменены. |
loss_reduction | Один из tf.losses.Reduction за исключением NONE. Описывает, как уменьшить потери обучения по партиям. По умолчанию SUM_OVER_BATCH_SIZE. |
sparse_combiner | Строка, определяющая способ уменьшения, если категориальный столбец является многозначным. Один из "mean", "sqrtn" и "sum" — это эффективные способы нормализации на уровне примеров, что может быть полезно для признаков «мешок слов». Для более подробной информации см. tf.feature_column.linear_model. |
| Возможные исключения | |
|---|---|
ValueError | если n_classes < 2. |
| Атрибуты | |
|---|---|
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.ExportOutputs, а входные данные всегда являются входными приемниками, предоставленными serving_input_receiver_fn.
Для обучения и оценки train_op сохраняется в дополнительном наборе, а потеря, метрики и прогнозы включаются в SignatureDef для рассматриваемого режима.
Дополнительные ресурсы могут быть записаны в SavedModel через аргумент assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение — полный путь исходного файла, который нужно скопировать. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
| Args | |
|---|---|
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 (по умолчанию), выбирается последний найденный контрольный пункт в каталоге модели. |
| Returns | |
|---|---|
| Путь к экспортированному каталогу в виде объекта байтов. |
| Raises | |
|---|---|
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'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 для полной документации.
| Args | |
|---|---|
export_dir_base | Строка, содержащая каталог, в котором нужно создать подкаталоги с отметкой времени, содержащие экспортированные SavedModels. |
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 , указывающее, какой режим будет экспортирован. Обратите внимание, что эта функция находится в стадии разработки. |
| Returns | |
|---|---|
| Путь к экспортированному каталогу в виде объекта байтов. |
| Raises | |
|---|---|
ValueError | если не предоставлен serving_input_receiver_fn, нет export_outputs или не найден контрольный пункт. |
get_variable_names
get_variable_names()
Возвращает список всех имён переменных в этой модели.
| Returns | |
|---|---|
| Список имён. |
| Raises | |
|---|---|
ValueError | Если Estimator ещё не создал контрольный пункт. |
get_variable_value
get_variable_value(
name
)
Возвращает значение переменной по имени.
| Args | |
|---|---|
name | строка или список строк, имя тензора. |
| Returns | |
|---|---|
| Массив NumPy — значение тензора. |
| Raises | |
|---|---|
ValueError | Если Estimator ещё не создал контрольный пункт. |
latest_checkpoint
latest_checkpoint()
Находит имя файла последнего сохранённого контрольного пункта в model_dir.
| Returns | |
|---|---|
Полный путь к последнему контрольному пункту или None , если контрольный пункт не был найден. |
predict
predict(
input_fn,
predict_keys=None,
hooks=None,
checkpoint_path=None,
yield_single_examples=True
)
Возвращает прогнозы для заданных признаков.
Обратите внимание, что чередование двух результатов предсказания не работает. См.: вопрос/20506
END_OF_DOCUMENT_MARKER| Аргументы | |
|---|---|
input_fn | Функция, которая строит признаки. Предсказание продолжается до тех пор, пока input_fn не сгенерирует исключение конца входных данных (tf.errors.OutOfRangeError или StopIteration). Дополнительную информацию см. в разделе Предопределенные оценщики. Функция должна строить и возвращать один из следующих объектов:
|
predict_keys | Список имен str, которые нужно предсказать. Используется, если tf.estimator.EstimatorSpec.predictions является dict. Если указан этот параметр, остальные предсказания из словаря будут отфильтрованы. Если не указан, возвращаются все предсказания. |
hooks | Список экземпляров подкласса tf.train.SessionRunHook. Используется для обратных вызовов внутри вызова предсказания. |
checkpoint_path | Путь к конкретному контрольному пункту для предсказания. Если не указан, используется последний контрольный пункт в model_dir. Если в model_dir нет контрольных пунктов, предсказание выполняется с использованием только что инициализированных Variables вместо восстановленных из контрольного пункта. |
yield_single_examples | Если True, возвращает всю партию целиком, как возвращает 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 | Количество шагов, на которых нужно обучить модель. Если не указано, обучение происходит бесконечно или до тех пор, пока input_fn не сгенерирует ошибку tf.errors.OutOfRange или исключение StopIteration. steps работает инкрементально. Если вы вызываете train(steps=10) дважды, обучение произойдет в общей сложности за 20 шагов. Если в процессе возникнет ошибка OutOfRange или StopIteration, обучение прекратится до достижения 20 шагов. Если вы не хотите иметь инкрементальное поведение, установите значение max_steps . Если установлено, max_steps должно быть None. |
max_steps | Общее количество шагов, на которых нужно обучить модель. Если не указано, обучение происходит бесконечно или до тех пор, пока 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 выполнением
Оценщики могут использоваться при включенном eager-выполнении. Обратите внимание, что 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/LinearClassifier