Spec-Zone.ru › TensorFlow 2.9

tf.estimator.DNNLinearCombinedRegressor

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

Оценщик для объединённых линейных и DNN-моделей TensorFlow для регрессии.

Предупреждение: Оценщики не рекомендуются для нового кода. Оценщики выполняют код в стиле v1.Session, что сложнее написать правильно и может вести себя непредсказуемо, особенно при сочетании с кодом TF 2. Оценщики подпадают под наши гарантии совместимости, но не будут получать исправлений, кроме исправлений уязвимостей безопасности. Подробности см. в руководстве по миграции Estimator.

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

tf.estimator.DNNLinearCombinedRegressor(
    model_dir=None,
    linear_feature_columns=None,
    linear_optimizer='Ftrl',
    dnn_feature_columns=None,
    dnn_optimizer='Adagrad',
    dnn_hidden_units=None,
    dnn_activation_fn=tf.nn.relu,
    dnn_dropout=None,
    label_dimension=1,
    weight_column=None,
    config=None,
    warm_start_from=None,
    loss_reduction=tf.losses.Reduction.SUM_OVER_BATCH_SIZE,
    batch_norm=False,
    linear_sparse_combiner='sum'
)
Примечание: Этот оценщик также известен как wide-n-deep.

Пример:

numeric_feature = numeric_column(...)
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(...)
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.DNNLinearCombinedRegressor(
    # wide settings
    linear_feature_columns=[categorical_feature_a_x_categorical_feature_b],
    linear_optimizer=tf.keras.optimizers.Ftrl(...),
    # deep settings
    dnn_feature_columns=[
        categorical_feature_a_emb, categorical_feature_b_emb,
        numeric_feature],
    dnn_hidden_units=[1000, 500, 100],
    dnn_optimizer=tf.keras.optimizers.Adagrad(...),
    # warm-start settings
    warm_start_from="/path/to/checkpoint/dir")

# To apply L1 and L2 regularization, you can set dnn_optimizer to:
tf.compat.v1.train.ProximalAdagradOptimizer(
    learning_rate=0.1,
    l1_regularization_strength=0.001,
    l2_regularization_strength=0.001)
# To apply learning rate decay, you can set dnn_optimizer to a callable:
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)
# It is the same for linear_optimizer.

# 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, steps=100)
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
predictions = estimator.predict(input_fn=input_fn_predict)

Ввод train и evaluate должен иметь следующие атрибуты, в противном случае возникнет KeyError:

  • для каждого column в dnn_feature_columns + linear_feature_columns:
    • если column является CategoricalColumn, атрибут с key=column.name, значение которого value является SparseTensor.
    • если column является WeightedCategoricalColumn, два атрибута: первый с key именем столбца id, второй с key именем столбца weight. Значение value обоих атрибутов должно быть SparseTensor.
    • если column является DenseColumn, атрибут с key=column.name, значение которого value является Tensor.

Функция потерь рассчитывается с использованием среднеквадратичной ошибки.

Аргументы
model_dir Каталог для сохранения параметров модели, графа и т. д. Его также можно использовать для загрузки контрольных точек из каталога в оценщик для продолжения обучения ранее сохранённой модели.
linear_feature_columns Итерируемый объект, содержащий все атрибуты столбцов, используемые линейной частью модели. Все элементы набора должны быть экземплярами классов, производными от FeatureColumn.
linear_optimizer Экземпляр tf.keras.optimizers.*, используемый для применения градиентов к линейной части модели. Также может быть строкой (одной из 'Adagrad', 'Adam', 'Ftrl', 'RMSProp', 'SGD') или вызываемым объектом. По умолчанию используется оптимизатор FTRL.
dnn_feature_columns Итерируемый объект, содержащий все атрибуты столбцов, используемые глубокой частью модели. Все элементы набора должны быть экземплярами классов, производными от FeatureColumn.
dnn_optimizer Экземпляр tf.keras.optimizers.*, используемый для применения градиентов к глубокой части модели. Также может быть строкой (одной из 'Adagrad', 'Adam', 'Ftrl', 'RMSProp', 'SGD') или вызываемым объектом. По умолчанию используется оптимизатор Adagrad.
dnn_hidden_units Список скрытых узлов на каждый слой. Все слои полностью соединены.
dnn_activation_fn Функция активации, применяемая к каждому слою. Если None, будет использована tf.nn.relu.
dnn_dropout Если не None, вероятность отбрасывания заданной координаты.
label_dimension Количество целей регрессии на пример. Это размер последнего измерения меток и прогнозов Tensor объектов (обычно эти объекты имеют форму [batch_size, label_dimension]).
weight_column Строка или NumericColumn, созданная tf.feature_column.numeric_column, определяющая атрибут столбца, представляющий веса. Используется для уменьшения или увеличения веса примеров во время обучения. Будет умножаться на потерю примера. Если это строка, она используется в качестве ключа для извлечения тензора весов из features. Если это _NumericColumn, исходный тензор извлекается по ключу weight_column.key, затем weight_column.normalizer_fn применяется к нему для получения тензора весов.
config Объект RunConfig для настройки параметров выполнения.
warm_start_from Путь к строковому файлу контрольной точки для начального обучения или объект WarmStartSettings для полной настройки начального обучения. Если путь к строковому файлу указан вместо WarmStartSettings, то все веса будут обновлены, а предполагается, что словари и имена тензоров не изменены.
loss_reduction Один из tf.losses.Reduction за исключением NONE. Описывает, как уменьшить потери обучения по батчу. По умолчанию SUM_OVER_BATCH_SIZE.
batch_norm Используется ли пакетная нормализация после каждого скрытого слоя.
linear_sparse_combiner Строка, определяющая, как уменьшить линейную модель, если категориальный столбец является многозначным. Один из "mean", "sqrtn" и "sum" - это эффективные способы выполнения нормализации на уровне примера, что может быть полезно для атрибутов "мешок слов". Более подробная информация см. в tf.feature_column.linear_model.
Возбуждает
ValueError Если как linear_feature_columns, так и dnn_features_columns пусты одновременно.
Атрибуты
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 в указанном режиме для генерации графика модели на основе этих признаков и меток и восстанавливает заданный контрольный пункт (или, если его нет, последний контрольный пункт) в график. Только один из режимов используется для сохранения переменных в 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 в 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 для полного описания.

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

совместимость с 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/DNNLinearCombinedRegressor

Spec-Zone.ru

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