Spec-Zone.ru › TensorFlow

tf.compat.v1.nn.embedding_lookup_sparse

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

tf.compat.v1.nn.embedding_lookup_sparse(
    params,
    sp_ids,
    sp_weights,
    partition_strategy='mod',
    name=None,
    combiner=None,
    max_norm=None,
    allow_fast_lookup=False
)

Эта операция предполагает, что для каждой строки в плотном тензоре, представленном sp_ids, имеется как минимум один идентификатор (то есть нет строк с пустыми признаками), а все индексы sp_ids расположены в каноническом построчном порядке.

sp_ids и sp_weights (если не None) являются SparseTensors или RaggedTensors ранга 2. Для SpareTensors с ненулевыми элементами, выровненными по левому краю и представимыми как RaggedTensors, использование RaggedTensors может обеспечить более высокую производительность.

Кроме того, предполагается, что все значения идентификаторов находятся в диапазоне [0, p0), где p0 — сумма размера params по измерению 0.

Аргументы
params Один тензор, представляющий полный тензор эмбеддингов, или список тензоров одинаковой формы, за исключением первого измерения, представляющих разделённые на шарды тензоры эмбеддингов. Также может быть PartitionedVariable, созданным путём разделения по измерению 0. Размер каждого элемента должен соответствовать заданному partition_strategy.
sp_ids N x M SparseTensor идентификаторов типа int64, где N обычно соответствует размеру пакета, а M может быть произвольным, или RaggedTensor ранга 2.
sparse_weights SparseTensor или RaggedTensor того же типа и формы, что и sparse_ids, содержащий веса типа float / double, соответствующие sparse_ids, или None, если предполагается, что все веса равны 1.0.
partition_strategy Строка, задающая стратегию разделения на шарды; имеет значение, если len(params) > 1. В настоящее время поддерживаются "div" и "mod". Значение по умолчанию — "mod". Подробнее см. tf.nn.embedding_lookup.
name Необязательное имя операции.
combiner Строка, задающая операцию редукции. В настоящее время поддерживаются "mean", "sqrtn" и "sum". "sum" вычисляет взвешенную сумму результатов эмбеддингов для каждой строки. "mean" — это взвешенная сумма, делённая на общий вес. "sqrtn" — это взвешенная сумма, делённая на квадратный корень из суммы квадратов весов. Значение по умолчанию — mean.
max_norm Если значение не равно None, каждый эмбеддинг перед объединением ограничивается, если его l2-норма превышает это значение.
allow_fast_lookup Необязательное логическое значение, указывающее, разрешено ли упрощённое получение эмбеддингов, когда params — это один тензор, а max_norm — None. Установка этого флага в True во время обучения может привести к использованию плотных градиентов с увеличенным потреблением памяти.
Возвращает
Плотный тензор, представляющий объединённые эмбеддинги для разреженных идентификаторов. Для каждой строки в плотном тензоре, представленном sp_ids, операция находит эмбеддинги для всех идентификаторов в этой строке, умножает их на соответствующие веса и объединяет их указанным способом.

Другими словами, если

shape(combined params) = [p0, p1, ..., pm]

и

shape(sp_ids) = shape(sp_weights) = [d0, d1]

то

shape(output) = [d0, p1, ..., pm].

Например, если params — это матрица размером 10x20, а sp_ids / sp_weights имеют вид

[0, 0]: id 1, weight 2.0
[0, 1]: id 3, weight 0.5
[1, 0]: id 0, weight 1.0
[2, 3]: id 1, weight 3.0

при combiner="mean", результатом будет матрица размером 3x20, где

output[0, :] = (params[1, :] * 2.0 + params[3, :] * 0.5) / (2.0 + 0.5)
output[1, :] = (params[0, :] * 1.0) / 1.0
output[2, :] = (params[1, :] * 3.0) / 3.0
Вызывает исключения
TypeError Если sp_ids не является SparseTensor или RaggedTensor либо если sp_weights не является None и не имеет тот же тип, что и sp_ids.
ValueError Если combiner не входит в {"mean", "sqrtn", "sum"}.

© 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/api_docs/python/tf/compat/v1/nn/embedding_lookup_sparse

Spec-Zone.ru

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