前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tf.sparse

tf.sparse

作者头像
狼啸风云
修改2022-09-03 22:00:34
1.8K0
修改2022-09-03 22:00:34
举报

目录

1、类

1、__init__

2、性质

3、__div__

4、__mul__

5、__truediv__

6、consumers

7、eval

8、from_value

9、get_shape

2、函数


稀疏张量表示。

1、类

class SparseTensor:表示一个稀疏张量。

张量流将稀疏张量表示为三个独立的稠密张量:指标、值和dense_shape。在Python中,为了便于使用,这三个张量被收集到一个SparseTensor类中。如果有单独的指标、值和dense_shape张量,在传递到下面的ops之前,将它们包装在sparse张量对象中。具体来说,稀疏张量稀疏张量(指标、值、dense_shape)由以下分量组成,其中N和ndims分别是稀疏张量中的值和维数:

  • indices:一个dense_shape [N, ndims]的二维int64张量,它指定了稀疏张量中包含非零值的元素的索引(元素是零索引的)。例如,indexes =[[1,3],[2,4]]指定索引为[1,3]和[2,4]的元素具有非零值。
  • indices:任何类型的一维张量和dense_shape [N],它为索引中的每个元素提供值。例如,给定指标=[[1,3],[2,4]],参数值=[18,3.6]指定稀疏张量的元素[1,3]取值为18,张量的元素[2,4]取值为3.6。
  • dense_shape: dense_shape [ndims]的一维int64张量,它指定稀疏张量的dense_shape。获取一个列表,该列表指示每个维度中的元素数量。例如,dense_shape=[3,6]指定一个二维的3x6张量,dense_shape=[2,3,4]指定一个三维的2x3x4张量,dense_shape=[9]指定一个包含9个元素的一维张量。

对应的稠密张量满足:

代码语言:javascript
复制
dense.shape = dense_shape
dense[tuple(indices[i])] = values[i]

按照惯例,索引应该按行主顺序排序(或者等价于元组索引的字典顺序[i])。当构造稀疏张量对象时,这并不是强制的,但是大多数ops都假定正确的顺序。如果稀疏张量st的序错了,可以通过调用tf.sparse.reorder(st)得到一个固定的版本。例子:稀疏张量

代码语言:javascript
复制
SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])

代表密集张量:

代码语言:javascript
复制
[[1, 0, 0, 0]
 [0, 0, 2, 0]
 [0, 0, 0, 0]]

1、__init__

代码语言:javascript
复制
__init__(
    indices,
    values,
    dense_shape
)

创建一个SparseTensor。

参数:

  • indices:一个二维int64张量的形状[N, ndims]。
  • values:任意类型和形状的一维张量[N]。
  • dense_shape:形状的一维int64张量[ndims]。

2、性质

dense_shape

  • 一个int64的一维张量,表示稠密张量的形状。

dtype

  • 这个张量中元素的d型。

graph

  • 包含索引、值和dense_shape张量的图。

indices

  • 表示的稠密张量中非零值的指标。

返回值:

  • 一个int64的二维张量,具有dense_shape [N, ndims],其中N是张量中非零值的个数,ndims是秩。

op

  • 将值作为输出产生的操作。

shape

  • 得到表示稠密张量形状的张量形状。

返回值:

  • 一个TensorShape对象。

value

  • 表示的稠密张量中的非零值。

返回值:

  • 任意数据类型的一维张量。

3、__div__

代码语言:javascript
复制
__div__(
    sp_x,
    y
)

分量方向上把稀疏张量除以稠密张量。限制:此Op只向稀疏端广播稠密端,而不向相反方向广播。

参数:

  • sp_indices: int64型张量。二维。N x R矩阵,在稀疏张量中有非空值的指标,可能不是正则有序的。
  • sp_values:张量。必须是以下类型之一:float32、float64、int32、uint8、int16、int8、complex64、int64、qint8、quint8、qint32、bfloat16、uint16、complex128、half、uint32、uint64。一维。N个与sp_indices对应的非空值。
  • sp_shape: int64类型的张量。一维。输入稀疏量的形状。
  • dense:张量。必须具有与sp_values相同的类型。r d。稠密张量操作数。
  • name:操作的名称(可选)。

返回值:

  • 一个张量。具有与sp_values相同的类型。

4、__mul__

代码语言:javascript
复制
__mul__(
    sp_x,
    y
)

分量方向上,稀疏张量乘以稠密张量。稀疏张量中隐式零元素对应的输出位置为零(即,不会占用存储空间),而不管稠密张量的内容(即使它是+/-INF并且INF*0 == NaN)。限制:此Op只向稀疏端广播稠密端,而不向相反方向广播。

参数:

  • sp_indices: int64型张量。二维。N x R矩阵,在稀疏张量中有非空值的指标,可能不是正则有序的。
  • sp_values:张量。必须是以下类型之一:float32、float64、int32、uint8、int16、int8、complex64、int64、qint8、quint8、qint32、bfloat16、uint16、complex128、half、uint32、uint64。一维。N个与sp_indices对应的非空值。
  • sp_shape: int64类型的张量。一维。输入稀疏量的形状。
  • dense:张量。必须具有与sp_values相同的类型。r d。稠密张量操作数。
  • name:操作的名称(可选)。

返回值:

  • 一个张量。具有与sp_values相同的类型。

5、__truediv__

代码语言:javascript
复制
__truediv__(
    sp_x,
    y
)

'sp_t / dense_t'的内部帮助函数。

6、consumers

代码语言:javascript
复制
consumers()

7、eval

代码语言:javascript
复制
eval(
    feed_dict=None,
    session=None
)

在一个会话中计算这个稀疏张量。调用这个方法将执行前面的所有操作,这些操作生成生成这个张量的操作所需的输入。注意:在调用SparseTensor.eval()之前,它的图形必须在一个会话中启动,并且要么默认会话必须可用,要么必须显式指定会话。

参数:

  • feed_dict:映射张量对象以提供值的字典。有关有效提要值的描述,请参见tf.Session.run。
  • session:(可选)用来计算这个稀疏张量的过程。如果没有,则使用默认会话。

返回值:

  • 一个SparseTensorValue对象。

8、from_value

代码语言:javascript
复制
@classmethod
from_value(
    cls,
    sparse_tensor_value
)

9、get_shape

代码语言:javascript
复制
get_shape()

得到表示稠密张量形状的张量形状。

返回值:

  • 一个TensorShape对象。

2、函数

add(...): 加上两个张量,至少其中一个是稀疏张量。

concat(...): 沿指定维连接稀疏张量列表。(弃用参数)

cross(...): 从稀疏和稠密张量列表生成稀疏交叉。

cross_hashed(...): 从稀疏和稠密张量列表生成散列稀疏交叉。

expand_dims(...): 将维数1插入张量的形状中。

eye(...): 创建一个沿着对角线的二维稀疏张量。

fill_empty_rows(...): 用默认值填充输入二维稀疏张量中的空行。

from_dense(...): 将稠密张量转化为稀疏张量。

mask(...): 掩码indexedslice的元素。

maximum(...): 返回两个稀疏量中元素的最大值。

minimum(...): 返回两个稀疏量的元素明智的最小值。

reduce_max(...): 计算稀疏张量维上元素的最大值。

reduce_sum(...): 计算稀疏张量各维元素的和。

reorder(...): 将稀疏张量重新排序为正则的行主顺序。

reset_shape(...): 重置指标和值不变的稀疏张量的形状。

reshape(...): 重新构造稀疏张量,以新的密集形状表示值。

retain(...): 在稀疏张量中保留指定的非空值。

segment_mean(...): 沿着张量的稀疏段计算平均值。

segment_sqrt_n(...): 计算张量沿稀疏段的和除以根号N。

segment_sum(...): 沿着张量的稀疏段计算和。

slice(...): 根据起始点和大小切片一个稀疏张量。

softmax(...): 将softmax应用于一个批处理的N-D稀疏张量。

sparse_dense_matmul(...): 乘以稀疏张量(秩2)A由稠密矩阵B表示。

split(...): 沿着轴将稀疏张量分解为num_split张量。

to_dense(...): 将稀疏张量转换为稠密张量。

to_indicator(...): 将ids的稀疏张量转换为稠密的bool指示张量。

transpose(...): 转置一个SparseTensor。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1、类
    • 1、__init__
      • 2、性质
        • 3、__div__
          • 4、__mul__
            • 5、__truediv__
              • 6、consumers
                • 7、eval
                  • 8、from_value
                    • 9、get_shape
                    • 2、函数
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档