Spec-Zone.ru › TensorFlow 2.3

tf.compat.v1.keras.layers.experimental.preprocessing.IntegerLookup

Преобразует целые числа из словаря в целочисленные индексы.

Наследуется от: IntegerLookup

tf.compat.v1.keras.layers.experimental.preprocessing.IntegerLookup(
    max_values=None, num_oov_indices=1, mask_value=0, oov_value=-1, vocabulary=None,
    invert=False, **kwargs
)

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

Если необходимо, пользователь может вызвать метод adapt() этого слоя на наборе данных, который проанализирует набор данных, определит частоту отдельных строковых значений и создаст словарь из них. Этот словарь может иметь неограниченный размер или быть ограниченным, в зависимости от параметров конфигурации этого слоя; если уникальных значений ввода больше, чем максимальный размер словаря, для создания словаря будут использоваться наиболее часто встречающиеся термины.

Примеры:

Создание слоя поиска со известным словарем

В этом примере создается слой поиска со предварительно созданным словарем.

vocab = [12, 36, 1138, 42]
data = tf.constant([[12, 1138, 42], [42, 1000, 36]])
layer = IntegerLookup(vocabulary=vocab)
layer(data)
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[2, 4, 5],
       [5, 1, 3]])>

Создание слоя поиска со адаптированным словарем

В этом примере создается слой поиска и генерируется словарь путем анализа набора данных.

data = tf.constant([[12, 1138, 42], [42, 1000, 36]])
layer = IntegerLookup()
layer.adapt(data)
layer.get_vocabulary()
[0, -1, 42, 1138, 1000, 36, 12]

Обратите внимание, как значение маски 0 и значение OOV -1 были добавлены в словарь. Остальные значения отсортированы по частоте (1138, который встречается 2 раза, стоит первым), а затем в обратном порядке.

data = tf.constant([[12, 1138, 42], [42, 1000, 36]])
layer = IntegerLookup()
layer.adapt(data)
layer(data)
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[6, 3, 2],
       [2, 4, 5]])>

Поиск со множеством токенов OOV.

В этом примере показано, как использовать слой поиска со множеством токенов OOV. Когда слой создается с более чем одним токеном OOV, все значения OOV хэшируются в количество ведер OOV, распределяя значения OOV детерминированным образом по множеству.

vocab = [12, 36, 1138, 42]
data = tf.constant([[12, 1138, 42], [37, 1000, 36]])
layer = IntegerLookup(vocabulary=vocab, num_oov_indices=2)
layer(data)
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[3, 5, 6],
       [2, 1, 4]])>

Обратите внимание, что выход для значения OOV 37 равен 2, а для значения OOV 1000 равен 1. Индексы значений в словаре увеличиваются на 1 по сравнению с предыдущими примерами (12 отображается как 3 и т. д.) для освобождения места для дополнительных значений OOV.

Обратный поиск

В этом примере показано, как отобразить индексы на значения с помощью этого слоя. (Вы также можете использовать adapt() с inverse=True, но для простоты мы передадим словарь в этом примере.)

vocab = [12, 36, 1138, 42]
data = tf.constant([[1, 3, 4], [4, 5, 2]])
layer = IntegerLookup(vocabulary=vocab, invert=True)
layer(data)
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[  12, 1138,   42],
       [  42,   -1,   36]])>

Обратите внимание, что целое число 5, которое не входит в пространство словаря, возвращает токен OOV.

Прямой и обратный поиск

В этом примере показано, как использовать словарь стандартного слоя поиска для создания обратного слоя поиска.

vocab = [12, 36, 1138, 42]
data = tf.constant([[12, 1138, 42], [42, 1000, 36]])
layer = IntegerLookup(vocabulary=vocab)
i_layer = IntegerLookup(vocabulary=layer.get_vocabulary(), invert=True)
int_data = layer(data)
i_layer(int_data)
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[  12, 1138,   42],
       [  42,   -1,   36]])>

В этом примере входное значение 1000 привело к выводу -1, так как 1000 не было в словаре - оно было представлено как OOV, и все значения OOV возвращаются как -1 в обратном слое. Также обратите внимание, что для работы обратного поиска необходимо предварительно установить словарь прямого слоя, либо непосредственно, либо через fit(), перед вызовом get_vocabulary().

Атрибуты
max_values Максимальный размер словаря для этого слоя. Если None, размер словаря не ограничен. Обратите внимание, что этот словарь включает значения OOV и маски, поэтому эффективное количество значений равно (max_values - num_oov_values - (1, если mask_token, иначе 0)).
num_oov_indices Количество значений вне словаря для использования; по умолчанию
  1. Если это значение больше 1, входы OOV модулируются для определения их значения OOV; если это значение равно 0, передача входного значения OOV приведет к возврату '-1' для этого значения в выходном тензоре. (Обратите внимание, что поскольку значение равно -1, а не 0, это позволит вам эффективно удалять значения OOV из категорических кодировок.)
mask_value Значение, представляющее входы маски, и которое отображается в индексе 0. По умолчанию 0. Если установлено в None, не будет добавляться термин маски, и значения OOV, если таковые имеются, будут индексироваться от (0...num_oov_values) вместо (1...num_oov_values+1).
oov_value Значение, представляющее значение вне словаря. По умолчанию -1.
vocabulary Необязательный список значений или путь к текстовому файлу, содержащий словарь для загрузки в этот слой. Файл должен содержать по одному значению на строку. Если список или файл содержит один и тот же токен несколько раз, будет выброшено исключение.
invert Если true, этот слой будет отображать индексы на элементы словаря вместо отображения элементов словаря на индексы.

Методы

adapt

Просмотреть исходный код

adapt(
    data, reset_state=True
)

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

Переопределяет метод adapt по умолчанию для применения соответствующей предобработки к входам перед передачей в комбиниратор.

Аргументы
data Данные для обучения. Их можно передать либо как tf.data Dataset, либо как массив numpy.
reset_state Необязательный аргумент, указывающий, следует ли очистить состояние слоя в начале вызова adapt. Для этого слоя это должно быть True, так как он не поддерживает повторные вызовы adapt.

get_vocabulary

Просмотреть исходный код

get_vocabulary()

set_vocabulary

Просмотреть исходный код

set_vocabulary(
    vocab
)

Устанавливает данные словаря для этого слоя с inverse=False.

Этот метод устанавливает словарь для этого слоя напрямую, вместо анализа набора данных с помощью «adapt». Его следует использовать всякий раз, когда информация о словаре уже известна. Если данные словаря уже присутствуют в слое, этот метод либо заменит

Аргументы
vocab Массив строковых токенов.
Исключения
ValueError Если входных данных слишком много, входные данные не соответствуют или отсутствуют данные ввода.

vocab_size

Просмотреть исходный код

vocab_size()

© 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.3/api_docs/python/tf/compat/v1/keras/layers/experimental/preprocessing/IntegerLookup

Spec-Zone.ru

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