2

我的任务是将特殊形成的密集矩阵张量转换为稀疏矩阵张量。例如,输入矩阵 M 如下(密集的正整数序列后跟 0 作为每一行中的填充)

[[3  5  7  0]
[2  2  0  0]
[1  3  9  0]]

此外,给定每行的非填充长度,例如由张量 L =

[3, 2, 3].

所需的输出将是稀疏张量 S。

SparseTensorValue(indices=array([[0, 0],[0, 1],[0, 2],[1, 0],[1, 1],[2, 0],[2, 1], [2, 2]]), values=array([3, 5, 7, 2, 2, 1, 3, 9], dtype=int32), shape=array([3, 4]))

这在对象由可变大小的描述符描述的模型中很有用(然后在 embedding_lookup_sparse 中使用 S 来连接描述符的嵌入。)

当 M 的行数已知时(通过 python 循环和像 slice 和 concat 这样的操作),我能够做到这一点。但是,此处 M 的行号由小批量大小决定,并且可能会发生变化(例如在测试阶段)。有没有好的方法来实现它?我正在尝试一些 control_flow_ops 但没有成功。

谢谢!!

4

0 回答 0