Lookup embedding results, accounting for invalid IDs and empty features.
tf.compat.v1.nn.safe_embedding_lookup_sparse( embedding_weights, sparse_ids, sparse_weights=None, combiner='mean', default_id=None, name=None, partition_strategy='div', max_norm=None )
The partitioned embedding in embedding_weights
must all be the same shape except for the first dimension. The first dimension is allowed to vary as the vocabulary size is not necessarily a multiple of P
. embedding_weights
may be a PartitionedVariable
as returned by using tf.compat.v1.get_variable()
with a partitioner.
Invalid IDs (< 0) are pruned from input IDs and weights, as well as any IDs with non-positive weight. For an entry with no features, the embedding vector for default_id
is returned, or the 0-vector if default_id
is not supplied.
The ids and weights may be multi-dimensional. Embeddings are always aggregated along the last dimension.
Args | |
---|---|
embedding_weights | A single tensor representing the complete embedding tensor, or a list tensors all of same shape except for the first dimension, representing sharded embedding tensors. Alternatively, a PartitionedVariable , created by partitioning along dimension 0. Each element must be appropriately sized for the given partition_strategy . |
sparse_ids | SparseTensor of shape [d_0, d_1, ..., d_n] containing the ids. d_0 is typically batch size. |
sparse_weights | SparseTensor of same shape as sparse_ids , containing float weights corresponding to sparse_ids , or None if all weights are be assumed to be 1.0. |
combiner | A string specifying how to combine embedding results for each entry. Currently "mean", "sqrtn" and "sum" are supported, with "mean" the default. |
default_id | The id to use for an entry with no features. |
name | A name for this operation (optional). |
partition_strategy | A string specifying the partitioning strategy. Currently "div" and "mod" are supported. Default is "div" . |
max_norm | If not None , all embeddings are l2-normalized to max_norm before combining. |
Returns | |
---|---|
A dense tensor representing the combined embeddings for the sparse ids. For each row in the dense tensor represented by sp_ids , the op looks up the embeddings for all ids in that row, multiplies them by the corresponding weight, and combines these embeddings as specified. In other words, if
and
then
For instance, if params is a 10x20 matrix, and sp_ids / sp_weights are [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
with 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 |
Raises | |
---|---|
ValueError | if embedding_weights is empty. |
© 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/compat/v1/nn/safe_embedding_lookup_sparse