tf.compat.v2.estimator.experimental.RNNClassifier
Классификатор для моделей TensorFlow RNN.
Наследуется от: RNNEstimator
tf.compat.v2.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.
- если
Функция потерь вычисляется с помощью перекрестной энтропии софтмакса.
| Аргументы | |
|---|---|
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 Execution
Оценка несовместима с 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 для получения признаков и меток Tensors. Затем этот метод вызывает 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 с оценщиками.
Этот метод создаёт новую графику, сначала вызывая 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 может быть использован для экспорта одного графика train/eval/predict как 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 с оценщиками.
Этот метод создаёт новую графику, сначала вызывая 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.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 | Если модель ещё не создала чекпоинт. |
get_variable_value
get_variable_value(
name
)
Возвращает значение переменной по заданному имени.
| Аргументы | |
|---|---|
name | Строка или список строк, имя тензора. |
| Возвращает | |
|---|---|
| Массив NumPy — значение тензора. |
| Возбуждает | |
|---|---|
ValueError | Если модель ещё не создала чекпоинт. |
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 | Функция, предоставляющая входные данные для обучения в виде мини-пакетов. См. Premade Estimators для получения дополнительной информации. Функция должна создавать и возвращать один из следующих объектов:
|
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/RNNClassifier