tensorflow将一个(结构化的)密集矩阵变换为稀疏的,当行数未知时

时间:2016-08-12 18:36:40

标签: tensorflow tensorflow-serving

我的任务是将一个特殊形成的密集矩阵张量转换为稀疏矩阵张量。例如输入矩阵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循环和ops像slice和concat),我能够做到这一点。但是,M的行号是由小批量大小决定的,可能会改变(比如在测试阶段)。有没有一个很好的方法来实现它?我正在尝试一些control_flow_ops但没有成功。

谢谢!

0 个答案:

没有答案