TensorFlow之稀疏张量表示

对于多维的稀疏数据,TensorFlow 支持 SparseTensor 表示。
官方文档地址:https://tensorflow.google.cn/api_guides/python/sparse_ops

构造稀疏张量

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。

你可能感兴趣的:(AI)