![]() |
Lookup embedding results, accounting for invalid IDs and empty features.
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
)
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 num of shards.
This is similar to tf.nn.embedding_lookup_sparse
, except 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. See tf.nn.embedding_lookup_sparse
for more information on how sparse embedding lookups work in general.
The ids and weights may be multi-dimensional SparseTensor
s or RaggedTensor
s with rank of 2. For SpareTensor
s with left-aligned non-zero entries which can be described as RaggedTensor
s, use of RaggedTensor
s can yield higher performance.
If len(embedding_weights) > 1
, each element id
of ids
is partitioned between the elements of embedding_weights
according to the "div" partition strategy, which means we assign ids to partitions in a contiguous manner. For instance, 13 ids are split across 5 partitions as: [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]]
.
If the id space does not evenly divide the number of partitions, each of the first (max_id + 1) % len(embedding_weights)
partitions will be assigned one more id.
Returns | |
---|---|
A dense tensor representing the combined embeddings for the sparse ids. For each row in the dense tensor represented by sparse_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
with
|
Raises | |
---|---|
ValueError | if embedding_weights is empty. |