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


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


將一批特征 ID 和值組合成一個 SparseTensor 。 (已棄用)

用法

tf.compat.v1.sparse_merge(
    sp_ids, sp_values, vocab_size, name=None, already_sorted=False
)

參數

  • sp_ids 具有類型為 int32int64values 屬性的單個 SparseTensor 或此類 SparseTensor 的 Python 列表或其列表。
  • sp_values 任何類型的SparseTensor
  • vocab_size 一個標量 int64 張量(或 Python int),包含最後一維的新大小 all(0 <= sp_ids.values < vocab_size) 。或所有 iall(0 <= sp_ids[i].values < vocab_size[i]) 列表。
  • name 返回張量的名稱前綴(可選)
  • already_sorted 一個布爾值,用於指定 sp_values 中的 per-batch 值是否已經排序。如果是這樣跳過排序,默認為 False(可選)。

返回

  • SparseTensor 緊湊地表示一批特征 id 和值,對於傳遞給期望這樣的函數很有用 SparseTensor

拋出

  • TypeError 如果 sp_values 不是 SparseTensor 。或者,如果 sp_ids 既不是 SparseTensor 也不是其列表。或者如果 vocab_size 不是 Tensor 或 Python int 並且 sp_idsSparseTensor 。或者,如果vocab_size 不是其中的一個或列表,而sp_ids 是一個列表。
  • ValueError 如果sp_idsvocab_size 是不同長度的列表。

警告:此函數已棄用。它將在未來的版本中刪除。更新說明:目前沒有類似的操作。

此函數最常見的用例發生在特征 ID 及其對應值存儲在磁盤上的Example protos 中時。 parse_example 將返回一批 id 和一批值,該函數將它們連接成一個邏輯 SparseTensor 以用於 sparse_tensor_dense_matmul , sparse_to_dense 等函數。

此函數返回的SparseTensor 具有以下屬性:

  • indices 等效於 sp_ids.indices ,最後一個維度被丟棄並替換為 sp_ids.values
  • values 隻是 sp_values.values
  • 如果 sp_ids.dense_shape = [D0, D1, ..., Dn, K] ,那麽 output.shape = [D0, D1, ..., Dn, vocab_size]

例如,考慮以下特征向量:

vector1 = [-3, 0, 0, 0, 0, 0]
  vector2 = [ 0, 1, 0, 4, 1, 0]
  vector3 = [ 5, 0, 0, 9, 0, 0]

通過僅存儲非零元素和相應值的特征 ID(如果向量被視為矩陣,則為列號),這些可能會稀疏地存儲在以下示例原型中:

examples = [Example(features={
                  "ids":Feature(int64_list=Int64List(value=[0])),
                  "values":Feature(float_list=FloatList(value=[-3]))}),
              Example(features={
                  "ids":Feature(int64_list=Int64List(value=[1, 4, 3])),
                  "values":Feature(float_list=FloatList(value=[1, 1, 4]))}),
              Example(features={
                  "ids":Feature(int64_list=Int64List(value=[0, 3])),
                  "values":Feature(float_list=FloatList(value=[5, 9]))})]

在這些示例上調用parse_example 的結果將生成一個字典,其中包含"ids" 和"values" 的條目。將這兩個對象與 vocab_size=6 一起傳遞給此函數,將生成一個稀疏地表示所有三個實例的 SparseTensor。即indices屬性將包含特征矩陣中非零條目的坐標(第一維是矩陣中的行號,即batch內的索引,第二維是列號,即特征ID); values 將包含實際值。 shape 將是原始矩陣的形狀,即 (3, 6)。對於我們上麵的示例,輸出將等於:

SparseTensor(indices=[[0, 0], [1, 1], [1, 3], [1, 4], [2, 0], [2, 3]],
               values=[-3, 1, 4, 1, 5, 9],
               dense_shape=[3, 6])

通過簡單地提供sp_ids 和vocab_size 的列表,此方法推廣到higher-dimensions。在這種情況下,生成的 SparseTensor 具有以下屬性:

  • indices 等效於 sp_ids[0].indices ,其中最後一個維度被丟棄並與 sp_ids[0].values, sp_ids[1].values, ... 連接。
  • values 隻是 sp_values.values
  • 如果 sp_ids.dense_shape = [D0, D1, ..., Dn, K] ,那麽 output.shape = [D0, D1, ..., Dn] + vocab_size

相關用法


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