tf.compat.v2.estimator.DNNRegressor
Регрессор для моделей TensorFlow DNN.
Наследуется от: Estimator
tf.compat.v2.estimator.DNNRegressor(
hidden_units, feature_columns, model_dir=None, label_dimension=1,
weight_column=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 = DNNRegressor(
feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
hidden_units=[1024, 512, 256])
# Or estimator using the ProximalAdagradOptimizer optimizer with
# regularization.
estimator = DNNRegressor(
feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
hidden_units=[1024, 512, 256],
optimizer=tf.train.ProximalAdagradOptimizer(
learning_rate=0.1,
l1_regularization_strength=0.001
))
# Or estimator using an optimizer with a learning rate decay.
estimator = DNNRegressor(
feature_columns=[categorical_feature_a_emb, categorical_feature_b_emb],
hidden_units=[1024, 512, 256],
optimizer=lambda: tf.AdamOptimizer(
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 = DNNRegressor(
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 | Директория для сохранения параметров модели, графа и т. д. Также может быть использована для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохранённой модели. |
label_dimension | Количество регрессионных целевых значений на пример. Это размер последнего измерения меток и объектов logits Tensor (как правило, у них форма [batch_size, label_dimension]). |
weight_column | Строка или _NumericColumn, созданная tf.feature_column.numeric_column, определяющая столбец признака, представляющий веса. Используется для уменьшения или увеличения весов примеров во время обучения. Будет умножаться на потерю примера. Если это строка, используется в качестве ключа для извлечения тензора весов из features. Если это _NumericColumn, исходный тензор извлекается по ключу weight_column.key, затем weight_column.normalizer_fn применяется к нему для получения тензора весов. |
optimizer | Экземпляр tf.keras.optimizers.Optimizer, используемый для обучения модели. Также может быть строкой (одним из '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 | Функция для построения входных данных для оценки. Смотрите Предварительно созданные оценщики для получения дополнительной информации. Функция должна создать и вернуть один из следующих объектов: * Объект 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 | |
|---|---|
| Путь к директории экспорта. |
| 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'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.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 | |
|---|---|
| Путь к директории экспорта. |
| 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
| Аргументы | |
|---|---|
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/r1.15/api_docs/python/tf/compat/v2/estimator/DNNRegressor