Spec-Zone.ru › TensorFlow 2.3

tf.estimator.DNNClassifier

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

Классификатор для моделей TensorFlow DNN.

Наследуется от: Estimator

tf.estimator.DNNClassifier(
    hidden_units, feature_columns, model_dir=None, n_classes=2, weight_column=None,
    label_vocabulary=None, optimizer='Adagrad', activation_fn=tf.nn.relu,
    dropout=None, config=None, warm_start_from=None,
    loss_reduction=losses_utils.ReductionV2.SUM_OVER_BATCH_SIZE, batch_norm=False
)

Пример:

categorical_feature_a = categorical_column_with_hash_bucket(...)
categorical_feature_b = categorical_column_with_hash_bucket(...)

categorical_feature_a_emb = embedding_column(
    categorical_column=categorical_feature_a, ...)
categorical_feature_b_emb = embedding_column(
    categorical_column=categorical_feature_b, ...)

estimator = tf.estimator.DNNClassifier(
    feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
    hidden_units=[1024, 512, 256])

# Or estimator using the ProximalAdagradOptimizer optimizer with
# regularization.
estimator = tf.estimator.DNNClassifier(
    feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
    hidden_units=[1024, 512, 256],
    optimizer=tf.compat.v1.train.ProximalAdagradOptimizer(
      learning_rate=0.1,
      l1_regularization_strength=0.001
    ))

# Or estimator using an optimizer with a learning rate decay.
estimator = tf.estimator.DNNClassifier(
    feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
    hidden_units=[1024, 512, 256],
    optimizer=lambda: tf.keras.optimizers.Adam(
        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 with warm-starting from a previous checkpoint.
estimator = tf.estimator.DNNClassifier(
    feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
    hidden_units=[1024, 512, 256],
    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 является CategoricalColumn, признак с именем key=column.name, значение которого является SparseTensor.
    • если column является WeightedCategoricalColumn, два признака: первый с именем столбца key, второй с именем столбца key. Значение обоих признаков должно быть SparseTensor.
    • если column является DenseColumn, признак с именем key=column.name, значение которого является Tensor.

Функция потерь рассчитывается с помощью софтмакс-пересечения энтропии.

Аргументы
hidden_units Список количества нейронов на каждом слое. Все слои являются полностью связанными. Например, [64, 32] означает, что первый слой имеет 64 нейрона, а второй — 32.
feature_columns Список всех столбцов признаков, используемых моделью. Все элементы списка должны быть экземплярами классов, производных от _FeatureColumn.
model_dir Директория для сохранения параметров модели, графа и т. д. Это также может быть использовано для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохранённой модели.
n_classes Количество классов меток. По умолчанию 2 (бинарная классификация). Должно быть > 1.
weight_column Строка или объект NumericColumn, созданный с помощью tf.feature_column.numeric_column, определяющий столбец признаков, представляющий веса. Используется для уменьшения или увеличения весов примеров во время обучения. Будет умножаться на потерю примера. Если это строка, она используется в качестве ключа для извлечения тензора весов из features. Если это объект, тензор извлекается по ключу weight_column.key, затем применяется функция normalizer_fn к столбцу весов для получения тензора весов.
label_vocabulary Список строк, представляющих возможные значения меток. Если указан, метки должны быть строкового типа и иметь любое значение из label_vocabulary. Если не указан, это означает, что метки уже закодированы как целые или вещественные числа в диапазоне [0, 1] для n_classes=2 и закодированы как целые числа в {0, 1,..., n_classes-1} для n_classes > 2. Также будут ошибки, если словарь не предоставлен, а метки являются строками.
optimizer Экземпляр tf.keras.optimizers.* для обучения модели. Также может быть строкой (одним из 'Adagrad', 'Adam', 'Ftrl', 'RMSProp', SGD') или вызываемым объектом. По умолчанию используется оптимизатор Adagrad.
activation_fn Функция активации, применяемая к каждому слою. Если None, будет использоваться tf.nn.relu.
dropout Если не None, вероятность отбросить заданную координату.
config Объект RunConfig для настройки параметров выполнения.
warm_start_from Путь к файлу контрольной точки для начальной загрузки или объект WarmStartSettings для полной настройки начальной загрузки. Если указан строковый путь вместо объекта WarmStartSettings, то все веса загружаются, и предполагается, что словари и имена тензоров не изменены.
loss_reduction Один из tf.losses.Reduction кроме NONE. Описывает, как уменьшать потери обучения на батче. По умолчанию SUM_OVER_BATCH_SIZE.
batch_norm Использовать ли пакетную нормализацию после каждого скрытого слоя.

Совместимость с 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 метод 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'}.

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
Путь к каталогу экспорта в виде объекта bytes.
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 от Estimators.

Этот метод строит новую графу, сначала вызывая serving_input_receiver_fn для получения признаков Tensor, а затем вызывая этот метод Estimator с методом 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.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 для полного документации.

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
Путь к каталогу экспорта в виде объекта bytes.
Raises
ValueError если не предоставлен serving_input_receiver_fn, нет export_outputs, или контрольный пункт не найден.

get_variable_names

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

get_variable_names()

Возвращает список всех имён переменных в этой модели.

Returns
Список имён.
Raises
ValueError Если модель ещё не создала контрольный пункт.

get_variable_value

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

get_variable_value(
    name
)

Возвращает значение переменной, заданной по имени.

Args
name Строка или список строк, имя тензора.
Returns
Массив NumPy — значение тензора.
Raises
ValueError Если модель ещё не создала контрольный пункт.

latest_checkpoint

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

latest_checkpoint()

Находит имя файла последнего сохранённого контрольного пункта в model_dir.

Returns
Полный путь к последнему контрольному пункту или None , если контрольный пункт не найден.

predict

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

predict(
    input_fn, predict_keys=None, hooks=None, checkpoint_path=None,
    yield_single_examples=True
)

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

Обратите внимание, что чередование двух выходов predict не работает. См.: вопрос/20506

END_OF_DOCUMENT_MARKER
Аргументы
input_fn Функция, которая строит признаки. Предсказание продолжается до тех пор, пока input_fn не сгенерирует исключение конца ввода (tf.errors.OutOfRangeError или StopIteration). Дополнительную информацию см. в Предварительно созданных оценщиках. Функция должна сконструировать и вернуть одно из следующего:
  • tf.data.Dataset объект — Выходы объекта Dataset должны соответствовать приведенным ниже ограничениям.
  • features — 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/DNNClassifier

Spec-Zone.ru

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