當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.compat.v1.nn.safe_embedding_lookup_sparse用法及代碼示例


查找嵌入結果,考慮無效 ID 和空特征。

用法

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
)

參數

  • embedding_weights 表示完整嵌入張量的單個張量,或除了第一個維度之外所有相同形狀的列表張量,表示分片嵌入張量。或者,通過沿維度 0 分區創建的 PartitionedVariable 。每個元素的大小必須針對給定的 partition_strategy 進行適當調整。
  • sparse_ids SparseTensor 形狀 [d_0, d_1, ..., d_n] 包含 id。 d_0 通常是批量大小。
  • sparse_weights SparseTensorsparse_ids 形狀相同,包含與 sparse_idsNone 對應的浮點權重,如果所有權重都假定為 1.0。
  • combiner 一個字符串,指定如何組合每個條目的嵌入結果。目前支持"mean"、"sqrtn"和"sum",默認為"mean"。
  • default_id 用於沒有特征的條目的 id。
  • name 此操作的名稱(可選)。
  • partition_strategy 指定分區策略的字符串。目前支持"div""mod"。默認為 "div"
  • max_norm 如果不是 None ,則所有嵌入在組合之前都經過 l2 歸一化為 max_norm。

返回

  • 表示稀疏 id 的組合嵌入的密集張量。對於由表示的密集張量中的每一行sp_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 中的分區嵌入必須是相同的形狀,除了第一個維度。第一個維度允許變化,因為詞匯量不一定是 P 的倍數。 embedding_weights 可能是通過將tf.compat.v1.get_variable() 與分區器一起使用而返回的PartitionedVariable

從輸入 ID 和權重以及任何具有非正權重的 ID 中刪除無效 ID (default_id 的嵌入向量,如果未提供 default_id,則返回 0 向量。

id 和權重可以是多維的。嵌入總是沿最後一個維度聚合。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.nn.safe_embedding_lookup_sparse。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。