TensorFlow之稀疏張量表示
阿新 • • 發佈:2019-01-02
構造稀疏張量
SparseTensor(indices, values, dense_shape)
indices
是一個維度為(n, ndims)的2-D int64張量,指定非零元素的位置。比如indices=[[1,3], [2,4]]
表示[1,3]和[2,4]位置的元素為非零元素。n表示非零元素的個數,ndims表示構造的稀疏張量的維數。
values
是一個維度為(N)的1-D張量,對應indices所指位置的元素值。
dense_shape
是一個維度為(ndims)的1-D張量,代表稀疏張量的維度。
tf.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]]
轉換
將稀疏張量轉為普通矩陣。
tf.sparse_to_dense(
sparse_indices,
output_shape,
sparse_values,
default_value=0,
validate_indices=True,
name=None
)
sparse_indices
是那些非零元素的位置。
sparse_indices
是實數,該矩陣為一維矩陣,指定一維矩陣的某一個元素位置sparse_indices
是向量,該矩陣為一維矩陣,指定一維矩陣的多個元素sparse_indices
是二維矩陣,該矩陣為多維矩陣,指定多維矩陣的多個元素。
output_shape
是矩陣的維度。
sparse_value
是對應sparse_indices所指位置的元素值。
default_value
是未指定元素的預設值,一般為0。
import tensorflow as tf
mysparse_indices = tf.constant(5)
mymatrix = tf.sparse_to_dense(mysparse_indices, [11], 10)
with tf.Session() as sess:
result = sess.run(mymatrix)
print(result)
//[0 0 0 0 0 10 0 0 0 0 0]
SparseTensor和SparseTensorValue
兩者的引數相同。
在計算圖中定義稀疏張量時,使用SparseTensor;在feed資料時使用SparseTensorValue。