tf.contrib.estimator.RNNEstimator
Оценщик для моделей TensorFlow RNN с заданным пользователем заголовком.
Наследуется от: Estimator
tf.contrib.estimator.RNNEstimator(
head, sequence_feature_columns, context_feature_columns=None, num_units=None,
cell_type=USE_DEFAULT, rnn_cell_fn=None, return_sequences=False, model_dir=None,
optimizer='Adagrad', input_layer_partitioner=None, 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],
num_units=[32, 16], cell_type='lstm')
# Or with custom RNN cell:
def rnn_cell_fn(mode):
cells = [ tf.contrib.rnn.LSTMCell(size) for size in [32, 16] ]
if mode == tf.estimator.ModeKeys.TRAIN:
cells = [ tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=0.5)
for cell in cells ]
return tf.contrib.rnn.MultiRNNCell(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, а не последовательные варианты. |
num_units | Итерируемый объект целых чисел, представляющих количество скрытых единиц на слой RNN. Если указано, то cell_type также должен быть указан, и rnn_cell_fn должен быть None . |
cell_type | Подкласс tf.nn.rnn_cell.RNNCell или строка, определяющая тип ячейки. Поддерживаемые строки: 'basic_rnn', 'lstm', и 'gru'. Если указано, num_units также должен быть указан, и rnn_cell_fn должен быть None. |
rnn_cell_fn | Функция с одним аргументом, tf.estimator.ModeKeys, возвращающая объект типа tf.nn.rnn_cell.RNNCell, который будет использоваться для построения RNN. Если указано, то num_units и cell_type не могут быть заданы. Это предназначено для опытных пользователей, которым требуется дополнительная настройка помимо num_units и cell_type. Обратите внимание, что для стопки RNN необходим tf.nn.rnn_cell.MultiRNNCell. |
return_sequences | Булево значение, указывающее, нужно ли вернуть последний выход в последовательности вывода или всю последовательность. |
model_dir | Каталог для сохранения параметров модели, графа и т. д. Также можно использовать для загрузки контрольных точек из каталога в оценщик для продолжения обучения ранее сохранённой модели. |
optimizer | Экземпляр tf.Optimizer или строка, определяющая тип оптимизатора. По умолчанию используется оптимизатор Adagrad. |
input_layer_partitioner | Необязательно. Партиционер для входного слоя. По умолчанию min_max_variable_partitioner с min_slice_size 64 << 20. |
config | Объект RunConfig для настройки параметров выполнения. |
| Исключения | |
|---|---|
ValueError | Если num_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 метод 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 | Строка, содержащая каталог, в котором будут созданы временные подкаталоги с экспортированными 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 (по умолчанию), выбирается самая последняя контрольная точка, найденная в каталоге модели. |
| 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 | Строка, содержащая каталог, в котором будут созданы временные подкаталоги с экспортированными 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, указывающее, в каком режиме будет экспортирован. Обратите внимание, что эта функция экспериментальная. |
| 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 в заданный каталог. (устарело)
Для подробного руководства см. Использование 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'}.
| Args | |
|---|---|
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 (по умолчанию), выбирается самая последняя контрольная точка, найденная в каталоге модели. |
strip_default_attrs | Булево значение. Если True, атрибуты с значениями по умолчанию будут удалены из NodeDef. Для подробного руководства см. Удаление атрибутов со значениями по умолчанию. |
| Возвращает | |
|---|---|
| Строковый путь к экспортированной директории. |
| Возбуждает | |
|---|---|
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). См. Предопределённые оценщики для получения дополнительной информации. Функция должна создать и вернуть один из следующих элементов:
|
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/contrib/estimator/RNNEstimator