tf.estimator.experimental.RNNClassifier
Классификатор для моделей TensorFlow RNN.
Наследуется от: RNNEstimator, Estimator
tf.estimator.experimental.RNNClassifier(
sequence_feature_columns, context_feature_columns=None, units=None,
cell_type=USE_DEFAULT, rnn_cell_fn=None, return_sequences=False, model_dir=None,
n_classes=2, weight_column=None, label_vocabulary=None,
optimizer='Adagrad',
loss_reduction=losses_utils.ReductionV2.SUM_OVER_BATCH_SIZE,
sequence_mask='sequence_mask', config=None
)
Обучает рекуррентную нейронную сеть для классификации примеров по одному из нескольких классов.
Пример:
token_sequence = sequence_categorical_column_with_hash_bucket(...)
token_emb = embedding_column(categorical_column=token_sequence, ...)
estimator = RNNClassifier(
sequence_feature_columns=[token_emb],
units=[32, 16], cell_type='lstm')
# 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.
- если
Функция потерь вычисляется с помощью кросс-энтропии softmax.
| Аргументы | |
|---|---|
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 | Булево значение, указывающее, нужно ли вернуть последний выход в последовательности выходов или всю последовательность. Обратите внимание, что если True, то weight_column должен быть None или строкой. |
model_dir | Директория для сохранения параметров модели, графа и т. д. Это также можно использовать для загрузки контрольных точек из директории в оценщик для продолжения обучения ранее сохранённой модели. |
n_classes | Количество классов меток. По умолчанию 2, то есть бинарная классификация. Должно быть > 1. |
weight_column | Строка или NumericColumn, созданная с помощью tf.feature_column.numeric_column, определяющая столбец атрибута, представляющий веса. Используется для уменьшения или увеличения веса примеров во время обучения. Будет умножаться на потерю примера. Если это строка, она используется как ключ для извлечения тензора весов из features. Если это NumericColumn, сырой тензор извлекается по ключу weight_column.key, а затем weight_column.normalizer_fn применяется к нему, чтобы получить тензор весов. |
label_vocabulary | Список строк, представляющих возможные значения меток. Если задан, метки должны быть строкового типа и иметь любое значение в label_vocabulary. Если он не задан, это означает, что метки уже закодированы как целые или вещественные числа в диапазоне [0, 1] для n_classes=2 и как целые числа в {0, 1,..., n_classes-1} для n_classes>2 . Также будут ошибки, если словарь не указан, а метки — строковые. |
optimizer | Экземпляр tf.Optimizer или строка, определяющая тип оптимизатора. По умолчанию оптимизатор Adagrad. |
loss_reduction | Один из tf.losses.Reduction за исключением NONE. Описывает, как уменьшить потери обучения по пакету. По умолчанию SUM_OVER_BATCH_SIZE. |
sequence_mask | Строка с именем тензора маски последовательности. Если sequence_mask находится в словаре атрибутов, используемый тензор; в противном случае маска последовательности вычисляется из длины атрибутов последовательностей. Маска последовательности используется в режиме оценки и обучения для агрегирования вычисления потерь и метрик, исключая шаги заполнения. Она также добавляется в словарь прогнозов в режиме прогнозирования, чтобы указать, какие шаги являются заполнением. |
config | Объект RunConfig для настройки настроек выполнения. |
| Исключения | |
|---|---|
ValueError | Если units, cell_type, и rnn_cell_fn несовместимы. |
Совместимость с Eager
Оценщики несовместимы с Eager execution.
| Атрибуты | |
|---|---|
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 | Функция, создающая входные данные для оценки. См. Premade Estimators для получения дополнительной информации. Функция должна создать и вернуть одно из следующего:
|
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.ExportOutput и входы всегда являются входными приемниками, предоставленными 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.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 для полной документации.
| Аргументы | |
|---|---|
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.ExportOutput , а входы всегда являются входными приемниками, предоставленными serving_input_receiver_fn.
Дополнительные ресурсы могут быть записаны в SavedModel с помощью аргумента assets_extra. Он должен быть словарем, где каждый ключ указывает путь назначения (включая имя файла) относительно директории assets.extra. Соответствующее значение указывает полный путь исходного файла, который будет скопирован. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
| Аргументы | |
|---|---|
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/r2.4/api_docs/python/tf/estimator/experimental/RNNClassifier