查找嵌入結果,考慮無效 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
表示完整嵌入張量的單個張量,或除第一個維度外所有相同形狀的張量列表,表示遵循"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。默認為 0 向量。 -
max_norm
如果不是None
,則所有嵌入在組合之前都經過 l2 歸一化為 max_norm。 -
name
此操作的名稱(可選)。
返回
-
表示稀疏 id 的組合嵌入的密集張量。對於由表示的密集張量中的每一行
sparse_ids
,op 查找該行中所有 id 的嵌入,將它們乘以相應的權重,並按指定組合這些嵌入。換句話說,如果
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
為空。
embedding_weights
中的分區嵌入必須是相同的形狀,除了第一個維度。第一個維度允許變化,因為詞匯量不一定是分片數量的倍數。
從輸入 ID 和權重以及任何具有非正權重的 ID 中刪除無效 ID (default_id 的嵌入向量,如果未提供 default_id
,則返回 0 向量。
id 和權重可以是多維的。嵌入總是沿最後一個維度聚合。
如果 len(embedding_weights) > 1
,則 ids
的每個元素 id
根據 "div" 分區策略在 embedding_weights
的元素之間進行分區,這意味著我們以連續的方式將 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。
相關用法
- Python tf.nn.sampled_softmax_loss用法及代碼示例
- Python tf.nn.scale_regularization_loss用法及代碼示例
- Python tf.nn.softmax用法及代碼示例
- Python tf.nn.sigmoid_cross_entropy_with_logits用法及代碼示例
- Python tf.nn.space_to_depth用法及代碼示例
- Python tf.nn.separable_conv2d用法及代碼示例
- Python tf.nn.sparse_softmax_cross_entropy_with_logits用法及代碼示例
- Python tf.nn.softmax_cross_entropy_with_logits用法及代碼示例
- Python tf.nn.embedding_lookup_sparse用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代碼示例
- Python tf.nn.dropout用法及代碼示例
- Python tf.nn.gelu用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代碼示例
- Python tf.nn.embedding_lookup用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代碼示例
- Python tf.nn.local_response_normalization用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代碼示例
- Python tf.nn.max_pool用法及代碼示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代碼示例
- Python tf.nn.l2_loss用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.nn.safe_embedding_lookup_sparse。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。