Spec-Zone.ru › TensorFlow 2.3

tf.estimator.experimental.RNNEstimator

Оценщик для моделей TensorFlow RNN с указанной пользователем головкой.

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

tf.estimator.experimental.RNNEstimator(
    head, sequence_feature_columns, context_feature_columns=None, units=None,
    cell_type=USE_DEFAULT, rnn_cell_fn=None, return_sequences=False, model_dir=None,
    optimizer='Adagrad', config=None
)

Пример:

token_sequence = sequence_categorical_column_with_hash_bucket(...)
token_emb = embedding_column(categorical_column=token_sequence, ...)

estimator = RNNEstimator(
    head=tf.estimator.RegressionHead(),
    sequence_feature_columns=[token_emb],
    units=[32, 16], cell_type='lstm')

# Or with custom RNN cell:
def rnn_cell_fn(_):
  cells = [ tf.keras.layers.LSTMCell(size) for size in [32, 16] ]
  return tf.keras.layers.StackedRNNCells(cells)

estimator = RNNEstimator(
    head=tf.estimator.RegressionHead(),
    sequence_feature_columns=[token_emb],
    rnn_cell_fn=rnn_cell_fn)

# Input builders
def input_fn_train: # returns x, y
  pass
estimator.train(input_fn=input_fn_train, steps=100)

def input_fn_eval: # returns x, y
  pass
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
def input_fn_predict: # returns x, None
  pass
predictions = estimator.predict(input_fn=input_fn_predict)

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

  • если головка weight_column не None, признак с key=weight_column, значение которого является Tensor.
  • для каждого column в sequence_feature_columns:
    • признак с key=column.name и value является SparseTensor.
  • для каждого column в context_feature_columns:
    • если column является CategoricalColumn, признак с key=column.name и value является SparseTensor.
    • если column является WeightedCategoricalColumn, два признака: первый с key — именем столбца, второй с key — именем столбца весов. Оба признака должны содержать value — тип SparseTensor.
    • если column является DenseColumn, признак с key=column.name и value является Tensor.

Функция потерь и предсказанный результат определяются указанной головкой.

Аргументы
head Экземпляр Head. Он определяет выходную функцию модели и функцию потерь, которая будет оптимизироваться.
sequence_feature_columns Итерируемый объект, содержащий FeatureColumn, которые представляют последовательный вход. Все элементы набора должны быть последовательными столбцами (например, sequence_numeric_column) или построены из одного (например, embedding_column с sequence_categorical_column_* в качестве входных данных).
context_feature_columns Итерируемый объект, содержащий FeatureColumn для контекстного входа. Данные, представленные этими столбцами, будут дублироваться и передаваться RNN на каждом временном шаге. Эти столбцы должны быть экземплярами классов, производными от DenseColumn (например, numeric_column), а не последовательных вариантов.
units Итерируемый объект с количеством скрытых узлов в каждом слое RNN. Если задано, также необходимо указать cell_type и rnn_cell_fn должно быть None
cell_type Класс, генерирующий ячейку RNN, или строка, указывающая тип ячейки. Поддерживаемые строки: 'simple_rnn', 'lstm', и 'gru'. Если задано, также необходимо указать units и rnn_cell_fn должно быть None
rnn_cell_fn Функция, возвращающая экземпляр ячейки RNN, который будет использоваться для построения RNN. Если задано, units и cell_type не могут быть заданы. Это предназначено для опытных пользователей, которым требуется дополнительная настройка, выходящая за рамки units и cell_type. Обратите внимание, что tf.keras.layers.StackedRNNCells необходима для стопки RNN.
return_sequences Булево значение, указывающее, следует ли вернуть последний выход в выходной последовательности или полную последовательность.
model_dir Директория для сохранения параметров модели, графика и т. д. Это также можно использовать для загрузки контрольных точек из каталога в оценочную модель для продолжения обучения ранее сохраненной модели.
optimizer Экземпляр tf.Optimizer или строка, определяющая тип оптимизатора. По умолчанию используется оптимизатор Adagrad.
config Объект RunConfig для настройки параметров выполнения.
Возможные исключения
ValueError Если units, cell_type, и rnn_cell_fn несовместимы.

Совместимость с Eager

Оценщики не совместимы с выполнением 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'}.

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 для получения признаков Estimators, а затем вызывая 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 для полного документации.

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 или не найдена контрольная точка.

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 в заданный каталог. (устарело)

Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: эта функция была переименована, используйте export_saved_model вместо неё.

Для подробного руководства см. SavedModel от Estimators.

Этот метод создаёт новую граф, сначала вызывая serving_input_receiver_fn для получения признаков Tensors, а затем вызывая 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()

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

Возвращает
Список имён.
Возбуждает
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. И 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/experimental/RNNEstimator

Spec-Zone.ru

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