tf.estimator.DNNLinearCombinedEstimator
| Просмотреть исходный код на GitHub |
Оценщик для объединённых моделей TensorFlow Linear и DNN с настраиваемой головной частью.
Наследуется от: Estimator
tf.estimator.DNNLinearCombinedEstimator(
head, 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, input_layer_partitioner=None,
config=None, 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 = DNNLinearCombinedEstimator(
head=tf.contrib.estimator.multi_label_head(n_classes=3),
# wide settings
linear_feature_columns=[categorical_feature_a_x_categorical_feature_b],
linear_optimizer=tf.train.FtrlOptimizer(...),
# deep settings
dnn_feature_columns=[
categorical_feature_a_emb, categorical_feature_b_emb,
numeric_feature],
dnn_hidden_units=[1000, 500, 100],
dnn_optimizer=tf.train.ProximalAdagradOptimizer(...))
# To apply L1 and L2 regularization, you can set dnn_optimizer to:
tf.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.AdamOptimizer(
learning_rate=tf.exponential_decay(
learning_rate=0.1,
global_step=tf.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именем столбца весов. Оба признакаvalueдолжны бытьSparseTensor. - если
columnявляется_DenseColumn, признак сkey=column.name, чьёvalueявляетсяTensor.
- если
Функция потерь вычисляется с использованием средней квадратичной ошибки.
| Аргументы | |
|---|---|
model_fn | Функция модели. Следует подписи:
|
model_dir | Директория для сохранения параметров модели, графика и т. д. Также может использоваться для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохранённой модели. Если PathLike объект, путь будет разрешён. Если None, модель_dir в config будет использоваться, если установлена. Если оба установлены, они должны быть одинаковыми. Если оба None, будет использоваться временная директория. |
config | Объект конфигурации estimator.RunConfig. |
params | dict гиперпараметров, которые будут переданы в model_fn. Ключи — имена параметров, значения — базовые типы Python. |
warm_start_from | Необязательный строковый путь к контрольной точке или SavedModel для предварительной загрузки, или объект tf.estimator.WarmStartSettings для полной настройки предварительной загрузки. Если None, предварительная загрузка выполняется только для обучаемых переменных. Если вместо объекта |
| Возможные исключения | |
|---|---|
ValueError | параметры model_fn не совпадают с params. |
ValueError | если это вызывается через подкласс, и если этот подкласс переопределяет член Estimator. |
Совместимость с Eager
Оцещники могут использоваться при включённом режиме eager execution. Обратите внимание, что input_fn и все хуки выполняются внутри контекста графика, поэтому они должны быть написаны для совместимости с режимом графика. Обратите внимание, что код input_fn с использованием tf.data обычно работает в режимах графика и eager.
| Атрибуты | |
|---|---|
config | |
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's 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.ExportOutputs, а входные данные всегда являются входными приёмниками, предоставленными 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 (по умолчанию), выбирается последний найденный контрольный пункт в каталоге модели. |
| Возвращает | |
|---|---|
| Строковый путь к экспортированному каталогу. |
| Возможные ошибки | |
|---|---|
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.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, указывающее, какой режим будет экспортирован. Обратите внимание, что эта функция экспериментальная. |
| Возвращает | |
|---|---|
| Строковый путь к экспортированному каталогу. |
| Возможные ошибки | |
|---|---|
ValueError | если не предоставлен serving_input_receiver_fn, не предоставлены export_outputs или не найден контрольный пункт. |
export_savedmodel
export_savedmodel(
export_dir_base, serving_input_receiver_fn, assets_extra=None, as_text=False,
checkpoint_path=None, strip_default_attrs=False
)
Экспортирует граф вывода в виде 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.ExportOutputs, а входные данные всегда являются входными приёмниками, предоставленными serving_input_receiver_fn.
Дополнительные ресурсы могут быть записаны в SavedModel через аргумент assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение задаёт полный путь к исходному файлу, который будет скопирован. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
| 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 (по умолчанию), выбирается самая последняя контрольная точка, найденная в каталоге модели. |
strip_default_attrs | Булево значение. Если True, атрибуты с значениями по умолчанию будут удалены из NodeDefs. Подробное руководство см. в Удаление атрибутов со значениями по умолчанию. |
| Returns | |
|---|---|
| Путь к экспортированной директории. |
| Raises | |
|---|---|
ValueError | если не указана serving_input_receiver_fn, не указаны export_outputs или не найдена контрольная точка. |
get_variable_names
get_variable_names()
Возвращает список всех имен переменных в этой модели.
| Returns | |
|---|---|
| Список имён. |
| Raises | |
|---|---|
ValueError | Если Estimator ещё не создала контрольную точку. |
get_variable_value
get_variable_value(
name
)
Возвращает значение переменной, заданной по имени.
| Args | |
|---|---|
name | Строка или список строк, имя тензора. |
| Returns | |
|---|---|
| Массив NumPy - значение тензора. |
| Raises | |
|---|---|
ValueError | Если Estimator ещё не создала контрольную точку. |
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
| Args | |
|---|---|
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.
| Raises | |
|---|---|
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.
| Args | |
|---|---|
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. Используется для обратных вызовов, которые выполняются непосредственно перед или после сохранения контрольной точки. |
| Returns | |
|---|---|
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/estimator/DNNLinearCombinedEstimator