阅读(6.2k) 书签 (0)

TensorFlow函数:tf.sparse_to_indicator

2018-03-14 10:35 更新

tf.sparse_to_indicator函数

sparse_to_indicator(
    sp_input,
    vocab_size,
    name=None
)

定义在:tensorflow/python/ops/sparse_ops.py.

请参阅指南:稀疏张量>转变

将 ids 的 SparseTensor 转换为稠密的布尔指示器张量.

sp_input.indices 的最后一个维度将被丢弃,并替换为 sp_input 的值.如果 sp_input.dense_shape = [D0, D1, ..., Dn, K],那么 output.shape = [D0, D1, ..., Dn, vocab_size],其中:

output[d_0, d_1, ..., d_n, sp_input[d_0, d_1, ..., d_n, k]] = True

在 output 的其他地方也是 False.

例如,如果 sp_input.dense_shape = [2, 3, 4] 使用非空值,则:

[0, 0, 0]: 0
[0, 1, 0]: 10
[1, 0, 3]: 103
[1, 1, 2]: 150
[1, 1, 3]: 149
[1, 1, 4]: 150
[1, 2, 1]: 121

并且 vocab_size = 200,那么输出将是一个 [2, 3, 200] 稠密的值为 False 的 bool 张量,它无处不在,除了以下的位置:

(0, 0, 0), (0, 1, 10), (1, 0, 103), (1, 1, 149), (1, 1, 150),
(1, 2, 121)

请注意,在输入 SparseTensor 中允许重复.此操作对于将 SparseTensors 转换为密集格式非常有用,以便与期望密集张量的操作符兼容.

输入 SparseTensor 必须按行优先顺序排列.

函数参数:

  • sp_input:具有 int32 或 int64 类型的 values 属性的 SparseTensor.
  • vocab_size:一个标量 Int64 的张量(或 Python INT),包含最后一个维度的新的大小,all(0 <= sp_input.values < vocab_size).
  • name:返回张量的名称前缀(可选).

函数返回值:

表示具有指定值的索引的稠密布尔指示器张量.

函数可能抛出的异常:

  • TypeError:如果 sp_input 不是 SparseTensor.