Spec-Zone.ru › TensorFlow 2.3

tf.estimator.BaselineClassifier

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

Классификатор, способный установить простой эталон.

Наследуется от: 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 Функция, которая строит входные данные для оценки. Смотрите 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 метод 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 (по умолчанию), выбирается самая последняя контрольная точка, найденная в каталоге модели.
Возвращаемое значение
Путь к экспортированной директории в виде объекта типа 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 для получения признаков Tensor , а затем вызвав 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 может быть использован для экспорта графа обучения/валидации/предикта как 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, указывающее режим экспорта. Обратите внимание, что эта функция находится в стадии разработки.
Возвращаемое значение
Путь к экспортированной директории в виде объекта типа 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
)

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

Обратите внимание, что одновременное использование двух выходов predict не работает. См.: вопрос/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/r2.3/api_docs/python/tf/estimator/BaselineClassifier

Spec-Zone.ru

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