Spec-Zone.ru › TensorFlow 2.9

tf.nn.embedding_lookup_sparse

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

Ищет вложения для заданных идентификаторов и весов из списка тензоров.

tf.nn.embedding_lookup_sparse(
    params, sp_ids, sp_weights, combiner=None, max_norm=None, name=None
)

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

sp_ids и sp_weights (если не None) являются SparseTensor с рангом 2. Вложения всегда агрегируются по последнему измерению.

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

Если len(params) > 1, каждый элемент sp_ids распределяется между элементами params в соответствии со стратегией разбиения «div», что означает, что мы назначаем идентификаторы разделам непрерывным образом. Например, 13 идентификаторов разделены на 5 разделов следующим образом: [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]].

Если пространство идентификаторов не делится равномерно на количество разделов, каждому из первых (max_id + 1) % len(params) разделов будет назначен на один идентификатор больше.

Аргументы
params Единственный тензор, представляющий полный тензор вложений, или список тензоров, все с одинаковой формой, за исключением первого измерения, представляющих фрагментированные тензоры вложений, следуя стратегии разбиения «div».
sp_ids N x M SparseTensor целочисленных идентификаторов int64, где N обычно является размером пакета, а M — произвольным.
sp_weights либо SparseTensor весов float / double, либо None , чтобы указать, что все веса должны быть равны 1. Если указано, sp_weights должен иметь точно такую ​​же форму и индексы, как sp_ids.
combiner Строка, определяющая операцию сведения. В настоящее время поддерживаются «mean», «sqrtn» и «sum». «sum» вычисляет взвешенную сумму результатов вложения для каждой строки. «mean» — это взвешенная сумма, деленная на общий вес. «sqrtn» — это взвешенная сумма, деленная на квадратный корень из суммы квадратов весов. По умолчанию mean.
max_norm Если не None, каждое вложение обрезается, если его l2-норма больше этого значения, прежде чем комбинировать.
name Необязательное имя для оператора.
Возвращаемые значения
Плотный тензор, представляющий объединенные вложения для разреженных идентификаторов. Для каждой строки в плотной тензорной матрице, представленной 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, или если sp_weights не является ни None, ни SparseTensor.
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/versions/r2.9/api_docs/python/tf/nn/embedding_lookup_sparse

Spec-Zone.ru

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