Spec-Zone.ru › TensorFlow 2.9

tf.estimator.experimental.RNNClassifier

Классификатор для моделей TensorFlow RNN.

Предупреждение: Эстиматоры не рекомендуются для нового кода. Эстиматоры используют код в стиле v1.Session, который сложнее написать правильно и может вести себя непредсказуемо, особенно при объединении с кодом TF 2. Эстиматоры подпадают под наши гарантии совместимости, но не будут получать исправлений, кроме исправлений уязвимостей безопасности. Подробности см. в руководстве по миграции.

Наследуется от: 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=tf.losses.Reduction.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 Итерируемый объект, содержащий FeatureColumns, представляющие последовательный вход. Все элементы набора должны быть либо столбцами последовательностей (например, sequence_numeric_column) или построены из одного (например, embedding_column с sequence_categorical_column_* в качестве входных данных).
context_feature_columns Итерируемый объект, содержащий FeatureColumns для контекстного ввода. Данные, представленные этими столбцами, будут дублироваться и передаваться 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 несовместимы.
Атрибуты
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, см. Использование формата SavedModel.

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

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

Для подробного руководства см. SavedModel от оценочных моделей..

Этот метод создаёт новую графу, сначала вызвав 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.ExportOutputs, а входные данные всегда — получателями входных данных, предоставленными 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. Подробное руководство см. в Удаление атрибутов с значениями по умолчанию.
Возвращает
Путь к экспортированному каталогу в виде объекта bytes.
Исключения
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). Подробнее см. Premade Estimators. Функция должна строить и возвращать одно из следующего:
  • tf.data.Dataset объект — выходы объекта Dataset должны удовлетворять тем же ограничениям, что и ниже.
  • features — 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 или словарь имён меток в виде строк к 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.

совместимость с eager

Оценщики несовместимы с eager выполнением.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/estimator/experimental/RNNClassifier

Spec-Zone.ru

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