tf.compat.v2.estimator.experimental.RNNEstimator
Оценщик для моделей TensorFlow RNN с заданным пользователем заголовком.
Наследуется от: Estimator
tf.compat.v2.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, значение которого являетсяSparseTensor.
- атрибут с
- для каждого
columnвcontext_feature_columns:- если
columnявляетсяCategoricalColumn, атрибут сkey=column.name, значение которого являетсяSparseTensor. - если
columnявляетсяWeightedCategoricalColumn, два атрибута: первый с именем столбцаkey, второй с именем столбцаkey. Значения обоих атрибутов должны бытьSparseTensor. - если
columnявляетсяDenseColumn, атрибут сkey=column.name, значение которого является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'}.
| Аргументы | |
|---|---|
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 для получения признаков 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'}.
Параметр 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 для получения признаков 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'}.
| Аргументы | |
|---|---|
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. Для подробного руководства см. Удаление атрибутов со значениями по умолчанию. |
| Возвращаемое значение | |
|---|---|
| Строковый путь к экспортированной директории. |
| Возбуждает исключение | |
|---|---|
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 не работает. Смотрите: issue/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/experimental/RNNEstimator