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 — сумма размера параметров по размеру 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, оператор ищет вложения для всех идентификаторов в этой строке, умножает их на соответствующий вес и объединяет эти вложения, как указано. Другими словами, если
и
тогда
Например, если 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 с 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"}. |
© 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.4/api_docs/python/tf/nn/embedding_lookup_sparse