tf.nn.safe_embedding_lookup_sparse
| Просмотреть исходный код на GitHub |
Ищет результаты вложения, учитывая недопустимые ID и пустые признаки.
tf.nn.safe_embedding_lookup_sparse(
embedding_weights, sparse_ids, sparse_weights=None, combiner='mean',
default_id=None, max_norm=None, name=None
)
Разделенное вложение в embedding_weights должно иметь одинаковую форму, за исключением первого измерения. Первое измерение разрешается изменять, так как размер словаря не обязательно является кратным количеству фрагментов.
Недопустимые ID (< 0) удаляются из входных ID и весов, а также все ID с неотрицательным весом. Для записи без признаков возвращается вектор вложения для default_id, или нулевой вектор, если default_id не указан.
ID и веса могут быть многомерными. Вложения всегда агрегируются по последнему измерению.
Если len(embedding_weights) > 1, каждый элемент id от ids распределяется между элементами embedding_weights в соответствии со стратегией разбиения «div», что означает, что мы назначаем ID фрагментам по порядку. Например, 13 ID разделены на 5 фрагментов как: [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]].
Если пространство ID не делится равномерно на количество фрагментов, каждому из первых (max_id + 1) % len(embedding_weights) фрагментов будет назначен ещё один ID.
| Аргументы | |
|---|---|
embedding_weights | Единственный тензор, представляющий полный тензор вложения, или список тензоров, все с одинаковой формой, за исключением первого измерения, представляющих фрагментированные тензоры вложения, следующие стратегии разбиения «div». |
sparse_ids | SparseTensor размера [d_0, d_1, ..., d_n], содержащий ID. d_0 обычно соответствует размеру батча. |
sparse_weights | SparseTensor с той же формой, что и sparse_ids, содержащие вещественные веса, соответствующие sparse_ids, или None , если предполагается, что все веса равны 1.0. |
combiner | Строка, определяющая, как объединять результаты вложения для каждой записи. В настоящее время поддерживаются «mean», «sqrtn» и «sum», по умолчанию используется «mean». |
default_id | ID, используемый для записи без признаков. По умолчанию - нулевой вектор. |
max_norm | Если не None, все вложения l2-нормализуются до max_norm перед объединением. |
name | Название данной операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Плотный тензор, представляющий объединённые вложения для разреженных ID. Для каждой строки в плотном тензоре, представленном sparse_ids, операция ищет вложения для всех ID в этой строке, умножает их на соответствующий вес и объединяет эти вложения в соответствии со спецификацией. Другими словами, если
и
тогда
Например, если params - это матрица 10x20, а sp_ids / sp_weights - это [0, 0]: id 1, weight 2.0 [0, 1]: id 3, weight 0.5 [1, 0]: id -1, 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 |
| Исключения | |
|---|---|
ValueError | если embedding_weights пусто. |
© 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/nn/safe_embedding_lookup_sparse