jittor.sparse
这里是Jittor的sparse模块的API文档,您可以通过from jittor import sparse
来获取该模块。
- class jittor.sparse.SparseVar(indices, values, shape)[源代码]
用于存储稀疏的 Var。
- 参数:
indices (jt.Var): 索引值,表示稀疏 Var 中非零元素的位置。
values (jt.Var): 数值,表示稀疏 Var 中非零元素的值。
shape (jt.NanoVector): 表示稀疏 Var 的形状。
- 形状:
indices: \((D, N)\),其中 \(D\) 为稀疏 Var 维数,\(N\) 为非零元素索引个数。
values: \((N,)\),其中 \(N\) 为非零元素索引个数。
shape: 长度为 \(D\) 的 NanoVector,其中 \(D\) 为稀疏 Var 维数。
- 属性:
ndim: 表示稀疏 Var 的维数。
- 代码示例:
>>> from jittor.sparse import SparseVar >>> indices = jt.array([[0, 1, 2], [1, 2, 3]]) >>> values = jt.array([2, 3, 3]) >>> shape = jt.NanoVector([5, 5,]) >>> a = SparseVar(indices, values, shape) >>> a.to_dense() jt.Var([[0 2 0 0 0] [0 0 3 0 0] [0 0 0 3 0] [0 0 0 0 0] [0 0 0 0 0]], dtype=int32)
- jittor.sparse.sparse_array(indices, values, shape)[源代码]
将给出的稀疏数组的索引、值和形状用于构建一个Jittor稀疏张量。 对于任何给定的索引,其对应的值不应该为零。 以下为数学表示,其中 \((i_1, i_2, ..., i_N)\) 是indices的某一行, \((j)\) 是该行在indices中的索引:
\[SparseVar[i_1, i_2, ..., i_N] = values[j]\]- 参数:
indices (Var): 稀疏数组的索引,必须是二维整型的Jittor变量。其每一行是代表非零值在最终结果中的位置
values (Var): 非零值组成的一维浮点型Jittor变量。
shape (NanoVector): 稀疏张量的形状。长度必须和indices中的列数相同。
- 返回值:
jt.sparse.SparseVar: 一个Jittor的稀疏张量
- 代码示例:
>>> import jittor as jt >>> indices = jt.array([[0, 0], [1, 2]]) >>> values = jt.array([1, 2]) >>> shape = jt.NanoVector([3, 4]) >>> jt.sparse.sparse_array(indices, values, shape).shape [3,4,]
- jittor.sparse.spmm(spase_x, y)[源代码]
稀疏矩阵和密集矩阵的乘法操作。此函数先将稀疏矩阵转化为密集矩阵,然后使用Jittor的矩阵乘法操作将两个矩阵相乘。此函数需要等长的rows和columns,即输入的两个矩阵可以执行矩阵乘法操作。
- 参数:
spase_x (jittor.sparse.SparseVar): 2维稀疏矩阵。假设有N行和M列
y (Var): 2维密集矩阵。假设有M行和P列
- 返回值:
jt.Var: 结果矩阵。它是一个N行和P列的密集矩阵
- 代码示例:
>>> import jittor as jt >>> indices = jt.array([[0, 0], [1, 2]]) >>> values = jt.array([1, 2]) >>> shape = jt.NanoVector([3, 4]) >>> sparse_mat = jt.sparse.sparse_array(indices, values, shape) [3,4,] >>> y = jt.randn(4,5) >>> jt.sparse.spmm(sparse_mat, y).shape [3,5,]