tf.estimator.BaselineClassifier
| Просмотреть исходный код на GitHub |
Классификатор, позволяющий установить простой базовый уровень.
Наследуется от: Estimator, Estimator
tf.estimator.BaselineClassifier(
model_dir=None, n_classes=2, weight_column=None, label_vocabulary=None,
optimizer='Ftrl', config=None,
loss_reduction=losses_utils.ReductionV2.SUM_OVER_BATCH_SIZE
)
Этот классификатор игнорирует значения признаков и будет учиться предсказывать среднее значение каждого метки. Для задач с одной меткой это будет предсказывать распределение вероятностей классов, как это видно в метках. Для задач с несколькими метками это будет предсказывать долю примеров, которые являются положительными для каждого класса.
Пример:
# Build BaselineClassifier classifier = tf.estimator.BaselineClassifier(n_classes=3) # 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 # Fit model. classifier.train(input_fn=input_fn_train) # Evaluate cross entropy between the test and train labels. loss = classifier.evaluate(input_fn=input_fn_eval)["loss"] # predict outputs the probability distribution of the classes as seen in # training. predictions = classifier.predict(new_samples)
Входные данные train и evaluate должны иметь следующие признаки, в противном случае произойдёт KeyError:
- если
weight_columnнеNone, признак сkey=weight_column, значение которого являетсяTensor.
| Аргументы | |
|---|---|
model_dir | Каталог для сохранения параметров модели, графа и т. д. Это также можно использовать для загрузки контрольных точек из каталога в оценщик для продолжения обучения ранее сохранённой модели. |
n_classes | Количество классов меток. По умолчанию — бинарная классификация. Должно быть больше 1. Примечание: метки классов — это целые числа, представляющие индекс класса (т. е. значения от 0 до n_classes-1). Для произвольных значений меток (например, строковых меток) сначала преобразуйте их в индексы классов. |
weight_column | Строка или NumericColumn, созданный tf.feature_column.numeric_column, определяющий столбец признаков, представляющий веса. Он будет умножен на потерю примера. |
label_vocabulary | Необязательный список строк размером [n_classes] , определяющий словарь меток. Поддерживается только для n_classes > 2. |
optimizer | Строка, объект tf.keras.optimizers.* или вызываемый объект, создающий оптимизатор для обучения. Если не указан, будет использован Ftrl в качестве оптимизатора по умолчанию. |
config | Объект RunConfig для настройки параметров выполнения. |
loss_reduction | Один из tf.losses.Reduction, за исключением NONE. Описывает, как уменьшить потерю обучения по пакету. По умолчанию SUM_OVER_BATCH_SIZE. |
| Возбуждает | |
|---|---|
ValueError | Если n_classes < 2. |
Совместимость с Eager execution
Оценщики могут использоваться при включённом режиме 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 | Функция, которая строит входные данные для оценки. См. Предопределённые оценщики для получения дополнительной информации. Функция должна создать и вернуть один из следующих объектов:
|
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 метод 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 (по умолчанию), выбирается самая последняя контрольная точка, найденная в директории модели. |
| Возвращаемое значение | |
|---|---|
| Путь к экспортированной директории в виде объекта bytes. |
| Исключения | |
|---|---|
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 для получения признаков Tensors, а затем вызывая 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 | Строка, содержащая директорию, в которой будут созданы поддиректории с отметками времени, содержащие экспортированные 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, указывающее, какой режим будет экспортирован. Обратите внимание, что эта функция экспериментальная. |
| Возвращаемое значение | |
|---|---|
| Путь к экспортированной директории в виде объекта bytes. |
| Исключения | |
|---|---|
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). Подробнее см. Предопределенные оценочные модули. Функция должна построить и вернуть одно из следующего:
|
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 не удовлетворяют условиям. |
© 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/estimator/BaselineClassifier