当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.sparse_merge用法及代码示例


将一批特征 ID 和值组合成一个 SparseTensor 。 (已弃用)

用法

tf.compat.v1.sparse_merge(
    sp_ids, sp_values, vocab_size, name=None, already_sorted=False
)

参数

  • sp_ids 具有类型为 int32int64values 属性的单个 SparseTensor 或此类 SparseTensor 的 Python 列表或其列表。
  • sp_values 任何类型的SparseTensor
  • vocab_size 一个标量 int64 张量(或 Python int),包含最后一维的新大小 all(0 <= sp_ids.values < vocab_size) 。或所有 iall(0 <= sp_ids[i].values < vocab_size[i]) 列表。
  • name 返回张量的名称前缀(可选)
  • already_sorted 一个布尔值,用于指定 sp_values 中的 per-batch 值是否已经排序。如果是这样跳过排序,默认为 False(可选)。

返回

  • SparseTensor 紧凑地表示一批特征 id 和值,对于传递给期望这样的函数很有用 SparseTensor

抛出

  • TypeError 如果 sp_values 不是 SparseTensor 。或者,如果 sp_ids 既不是 SparseTensor 也不是其列表。或者如果 vocab_size 不是 Tensor 或 Python int 并且 sp_idsSparseTensor 。或者,如果vocab_size 不是其中的一个或列表,而sp_ids 是一个列表。
  • ValueError 如果sp_idsvocab_size 是不同长度的列表。

警告:此函数已弃用。它将在未来的版本中删除。更新说明:目前没有类似的操作。

此函数最常见的用例发生在特征 ID 及其对应值存储在磁盘上的Example protos 中时。 parse_example 将返回一批 id 和一批值,该函数将它们连接成一个逻辑 SparseTensor 以用于 sparse_tensor_dense_matmul , sparse_to_dense 等函数。

此函数返回的SparseTensor 具有以下属性:

  • indices 等效于 sp_ids.indices ,最后一个维度被丢弃并替换为 sp_ids.values
  • values 只是 sp_values.values
  • 如果 sp_ids.dense_shape = [D0, D1, ..., Dn, K] ,那么 output.shape = [D0, D1, ..., Dn, vocab_size]

例如,考虑以下特征向量:

vector1 = [-3, 0, 0, 0, 0, 0]
  vector2 = [ 0, 1, 0, 4, 1, 0]
  vector3 = [ 5, 0, 0, 9, 0, 0]

通过仅存储非零元素和相应值的特征 ID(如果向量被视为矩阵,则为列号),这些可能会稀疏地存储在以下示例原型中:

examples = [Example(features={
                  "ids":Feature(int64_list=Int64List(value=[0])),
                  "values":Feature(float_list=FloatList(value=[-3]))}),
              Example(features={
                  "ids":Feature(int64_list=Int64List(value=[1, 4, 3])),
                  "values":Feature(float_list=FloatList(value=[1, 1, 4]))}),
              Example(features={
                  "ids":Feature(int64_list=Int64List(value=[0, 3])),
                  "values":Feature(float_list=FloatList(value=[5, 9]))})]

在这些示例上调用parse_example 的结果将生成一个字典,其中包含"ids" 和"values" 的条目。将这两个对象与 vocab_size=6 一起传递给此函数,将生成一个稀疏地表示所有三个实例的 SparseTensor。即indices属性将包含特征矩阵中非零条目的坐标(第一维是矩阵中的行号,即batch内的索引,第二维是列号,即特征ID); values 将包含实际值。 shape 将是原始矩阵的形状,即 (3, 6)。对于我们上面的示例,输出将等于:

SparseTensor(indices=[[0, 0], [1, 1], [1, 3], [1, 4], [2, 0], [2, 3]],
               values=[-3, 1, 4, 1, 5, 9],
               dense_shape=[3, 6])

通过简单地提供sp_ids 和vocab_size 的列表,此方法推广到higher-dimensions。在这种情况下,生成的 SparseTensor 具有以下属性:

  • indices 等效于 sp_ids[0].indices ,其中最后一个维度被丢弃并与 sp_ids[0].values, sp_ids[1].values, ... 连接。
  • values 只是 sp_values.values
  • 如果 sp_ids.dense_shape = [D0, D1, ..., Dn, K] ,那么 output.shape = [D0, D1, ..., Dn] + vocab_size

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.sparse_merge。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。