Spec-Zone.ru › TensorFlow

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, операция ищет вложения для всех идентификаторов в этой строке, умножает их на соответствующий вес и объединяет эти вложения, как указано.

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

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

и

shape(sparse_ids) = shape(sparse_weights) = [d0, d1, ..., dn]

тогда

shape(output) = [d0, d1, ... dn-1, 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 -1, weight 1.0
[2, 3]: id 1, weight 3.0

default_id равно 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
Исключения
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

Spec-Zone.ru

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