Функция nn.embedding_lookup
Функция nn.embedding_lookup извлекает строки из матрицы эмбеддингов по заданным индексам. Первым параметром функция принимает матрицу вложений (тензор или список тензоров), вторым - индексы для выборки. Третьим необязательным параметром можно передать имя операции. Функция часто используется для преобразования целочисленных идентификаторов слов или категорий в плотные векторы признаков.
Синтаксис
tf.nn.embedding_lookup(params, ids, [name])
Пример
Давайте создадим матрицу эмбеддингов и извлечем из нее строки с индексами 0, 2 и 4:
import tensorflow as tf
embeddings = tf.constant([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15]
])
ids = tf.constant([0, 2, 4])
res = tf.nn.embedding_lookup(embeddings, ids)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 1 2 3]
[ 7 8 9]
[13 14 15]], shape=(3, 3), dtype=int32)
Пример
Давайте передадим двумерный тензор индексов, чтобы получить трехмерный результат:
import tensorflow as tf
embeddings = tf.constant([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15]
])
ids = tf.constant([[0, 1], [3, 4]])
res = tf.nn.embedding_lookup(embeddings, ids)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 1 2 3]
[ 4 5 6]]
[[10 11 12]
[13 14 15]]], shape=(2, 2, 3), dtype=int32)
Смотрите также
-
функцию
embedding_lookup_sparse,
которая выполняет поиск эмбеддингов для разреженных индексов -
функцию
safe_embedding_lookup_sparse,
которая безопасно извлекает эмбеддинги для разреженных данных -
функцию
l2_normalize,
которая нормализует векторы по L2-норме -
функцию
dropout,
которая применяет dropout к элементам тензора