• tf.sparse


    参考   tf.sparse - 云+社区 - 腾讯云

    目录

    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个元素的一维张量。

    对应的稠密张量满足:

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

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

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

    代表密集张量:

    1. [[1, 0, 0, 0]
    2.  [0, 0, 2, 0]
    3.  [0, 0, 0, 0]]

    1、__init__

    1. __init__(
    2.     indices,
    3.     values,
    4.     dense_shape
    5. )

    创建一个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__

    1. __div__(
    2.     sp_x,
    3.     y
    4. )

    分量方向上把稀疏张量除以稠密张量。限制:此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__

    1. __mul__(
    2.     sp_x,
    3.     y
    4. )

    分量方向上,稀疏张量乘以稠密张量。稀疏张量中隐式零元素对应的输出位置为零(即,不会占用存储空间),而不管稠密张量的内容(即使它是+/-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__

    1. __truediv__(
    2.     sp_x,
    3.     y
    4. )

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

    6、consumers

    consumers()
    

    7、eval

    1. eval(
    2.     feed_dict=None,
    3.     session=None
    4. )

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

    参数:

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

    返回值:

    • 一个SparseTensorValue对象。

    8、from_value

    1. @classmethod
    2. from_value(
    3.     cls,
    4.     sparse_tensor_value
    5. )

    9、get_shape

    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。

  • 相关阅读:
    Xposed hook 抖音账户信息
    java毕业设计天狗电子商城系统mybatis+源码+调试部署+系统+数据库+lw
    lucene原理
    【Mysql】第1篇--数据库概述
    HTTP 响应行 错误类型响应码
    Mall电商实战项目全面升级,支持最新版SpringBoot,干掉循环依赖
    LeetCode·96.不同的二叉搜索树·动态规划
    CCF-CSP 29次 第五题【202303-5 施肥】
    HTML、CSS和jQuery:实现图片折叠展开的效果
    【jvm如何在设计层面实现线程实现停顿时间控制的思考】
  • 原文地址:https://blog.csdn.net/weixin_36670529/article/details/100177454