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