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


Python tf.sparse.SparseTensor用法及代碼示例


表示稀疏張量。

用法

tf.sparse.SparseTensor(
    indices, values, dense_shape
)

參數

  • indices 形狀為 [N, ndims] 的二維 int64 張量。
  • values 任何類型和形狀的一維張量 [N]
  • dense_shape 形狀為 [ndims] 的一維 int64 張量。

拋出

  • ValueError 如果 dense_shape 未知或包含未知元素(None 或 -1),則在構建 Eager SparseTensor 時。

屬性

  • dense_shape int64 的一維張量,表示密集張量的形狀。
  • dtype 該張量中元素的DType
  • graph Graph 包含索引、值和 dense_shape 張量。
  • indices 表示的密集張量中非零值的索引。
  • op 生成values 作為輸出的Operation
  • shape 獲取表示密集張量形狀的TensorShape
  • values 表示的密集張量中的非零值。

TensorFlow 將稀疏張量表示為三個獨立的密集張量:indices , valuesdense_shape。在 Python 中,三個張量被收集到一個SparseTensor 類中以便於使用。如果您有單獨的 indices , valuesdense_shape 張量,請將它們包裝在 SparseTensor 對象中,然後再傳遞給下麵的操作。

具體來說,稀疏張量 SparseTensor(indices, values, dense_shape) 包含以下組件,其中 Nndims 分別是 SparseTensor 中的值數和維數:

  • indices :形狀為 [N, ndims] 的二維 int64 張量,它指定稀疏張量中包含非零值的元素的索引(元素為 zero-indexed)。例如,indices=[[1,3], [2,4]] 指定索引為 [1,3] 和 [2,4] 的元素具有非零值。

  • values :任何類型和形狀的一維張量 [N] ,它為 indices 中的每個元素提供值。例如,給定 indices=[[1,3], [2,4]] ,參數 values=[18, 3.6] 指定稀疏張量的元素 [1,3] 的值為 18,張量的元素 [2,4] 的值為 3.6。

  • dense_shape :形狀為 [ndims] 的一維 int64 張量,它指定稀疏張量的 dense_shape。獲取一個列表,指示每個維度中的元素數量。例如,dense_shape=[3,6] 指定二維 3x6 張量,dense_shape=[2,3,4] 指定三維 2x3x4 張量,dense_shape=[9] 指定具有 9 個元素的一維張量。

對應的稠密張量滿足:

dense.shape = dense_shape
dense[tuple(indices[i])] = values[i]

按照慣例,indices 應該按行優先順序(或等效的元組 indices[i] 上的字典順序)排序。在構造 SparseTensor 對象時不會強製執行此操作,但大多數操作都假定正確排序。如果稀疏張量st的排序錯誤,可以通過調用tf.sparse.reorder(st)得到一個固定的版本。

示例:稀疏張量

SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])

表示稠密張量

[[1, 0, 0, 0]
 [0, 0, 2, 0]
 [0, 0, 0, 0]]

相關用法


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