Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.Discretization

Слой предобработки, который группирует непрерывные признаки по диапазонам.

Наследуется от: PreprocessingLayer, Layer, Module

Просмотр псевдонимов

Основные псевдонимы

tf.keras.layers.experimental.preprocessing.Discretization

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.layers.Discretization, tf.compat.v1.keras.layers.experimental.preprocessing.Discretization

tf.keras.layers.Discretization(
    bin_boundaries=None,
    num_bins=None,
    epsilon=0.01,
    output_mode='int',
    sparse=False,
    **kwargs
)

Этот слой поместит каждый элемент входных данных в один из нескольких смежных диапазонов и выведет целочисленный индекс, указывающий, в какой диапазон был помещён каждый элемент.

Обзор и полный список слоев предобработки см. в руководстве по предобработке руководство.

Входная форма:

Любой tf.Tensor или tf.RaggedTensor размерности 2 или выше.

Выходная форма:

Такая же, как форма входа.

Аргументы
bin_boundaries Список границ бинов. Левый и правый бины всегда будут простираться до -inf и inf, поэтому bin_boundaries=[0., 1., 2.] создаёт бины (-inf, 0.), [0., 1.), [1., 2.), и [2., +inf). Если этот параметр установлен, adapt() вызывать не следует.
num_bins Целое число бинов для вычисления. Если этот параметр установлен, необходимо вызвать adapt() для обучения границ бинов.
epsilon Допуск погрешности, обычно небольшая доля, близкая к нулю (например, 0,01). Более высокие значения epsilon увеличивают аппроксимацию квантилей, и поэтому приводят к более неравномерным группам, но могут улучшить производительность и потребление ресурсов.
output_mode Указание для вывода слоя. По умолчанию "int". Значения могут быть "int", "one_hot", "multi_hot", или "count" для конфигурирования слоя следующим образом:
  • "int": Возвращает индексы бинов дискретизации непосредственно.
  • "one_hot": Кодирует каждый отдельный элемент входных данных в массив такого же размера, что и num_bins, содержащий 1 в индексе бина входных данных. Если размерность последнего измерения равна 1, кодирует по этому измерению. Если размерность последнего измерения не равна 1, добавляет новое измерение для закодированного вывода.
  • "multi_hot": Кодирует каждый образец входных данных в один массив такого же размера, что и num_bins, содержащий 1 для каждого индекса бина, присутствующего в образце. Обрабатывает последнюю размерность как размерность образца, если форма входа (..., sample_length), форма выхода будет (..., num_tokens).
  • "count": Как "multi_hot", но целочисленный массив содержит количество раз, которое индекс бина появлялся в образце.
sparse Булево значение. Применимо только к режимам вывода "one_hot", "multi_hot", и "count". Если True, возвращает SparseTensor вместо плотного Tensor. По умолчанию False.

Примеры:

Группирование значений с плавающей точкой на основе заданных бинов.

>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = tf.keras.layers.Discretization(bin_boundaries=[0., 1., 2.])
>>> layer(input)
<tf.Tensor: shape=(2, 4), dtype=int64, numpy=
array([[0, 2, 3, 1],
       [1, 3, 2, 1]])>

Группирование значений с плавающей точкой на основе числа бинов для вычисления.

>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = tf.keras.layers.Discretization(num_bins=4, epsilon=0.01)
>>> layer.adapt(input)
>>> layer(input)
<tf.Tensor: shape=(2, 4), dtype=int64, numpy=
array([[0, 2, 3, 2],
       [1, 3, 3, 1]])>
Атрибуты
is_adapted Была ли слой уже подготовлен к данным.

Методы

adapt

Просмотр исходного кода

adapt(
    data, batch_size=None, steps=None
)

Вычисляет границы бинов из квантилей в наборе входных данных.

Вызов adapt() на слое Discretization является альтернативой передаче аргумента bin_boundaries во время создания. Слой Discretization всегда должен быть адаптирован к набору данных или иметь передано значение bin_boundaries.

Во время adapt(), слой будет оценивать квантильные границы входного набора данных. Количество квантилей можно контролировать с помощью аргумента num_bins, а допуск погрешности для квантильных границ — с помощью аргумента epsilon.

Для того, чтобы Discretization был эффективным в любом контексте распределения, вычисленные границы остаются статичными по отношению к любым составленным tf.Graph слоям, которые вызывают слой. Вследствие этого, если слой адаптируется второй раз, все модели, использующие слой, должны быть перекомпилированы. Дополнительная информация представлена в tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt.

adapt() предназначен только для использования в одномашинном режиме для вычисления состояния слоя. Чтобы проанализировать набор данных, который не может поместиться на одной машине, см. Tensorflow Transform для многомашинного решения по типу MapReduce.

Аргументы
data Данные для обучения. Их можно передать как tf.data.Dataset или как массив NumPy.
batch_size Целое число или None. Количество образцов на обновление состояния. Если не указано, batch_size по умолчанию будет равно 32. Не указывайте batch_size в случае, если ваши данные представляют собой наборы данных, генераторы или экземпляры keras.utils.Sequence (так как они генерируют пакеты).
steps Целое число или None. Общее количество шагов (пакетов образцов). При обучении с помощью тензоров входных данных, таких как тензоры данных TensorFlow, значение None по умолчанию равно количеству образцов в наборе данных, делённому на размер пакета, или 1, если это невозможно определить. Если x представляет собой набор данных tf.data, и 'steps' имеет значение None, эпоха будет выполняться до тех пор, пока набор входных данных не будет исчерпан. При передаче бесконечно повторяющегося набора данных необходимо указать аргумент steps . Этот аргумент не поддерживается с входными массивами.

compile

Просмотр исходного кода

compile(
    run_eagerly=None, steps_per_execution=None
)

Настраивает слой для adapt.

Аргументы
run_eagerly Булево. По умолчанию False. Если True, логика этого Model не будет обернута в tf.function. Рекомендуется оставить это значение как None , если ваш Model не может быть запущен внутри tf.function. steps_per_execution: Целое число. По умолчанию 1. Количество пакетов, выполняемых во время каждого вызова tf.function. Выполнение нескольких пакетов внутри одного вызова tf.function может значительно улучшить производительность на TPUs или небольших моделях с большой накладными расходами Python.

reset_state

Просмотр исходного кода

reset_state()

Сбрасывает статистику слоя предобработки.

update_state

Просмотр исходного кода

update_state(
    data
)

Накапливает статистику для слоя предобработки.

Аргументы
data Мини-пакет входных данных для слоя.

© 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/keras/layers/Discretization

Spec-Zone.ru

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