dgl.sparse

dgl.sparse 是一个用于GNN模型中常用的稀疏操作符的库。

稀疏矩阵类

class dgl.sparse.SparseMatrix[source]

可以使用spmatrix()构造函数从坐标格式索引创建稀疏矩阵:

>>> indices = torch.tensor([[1, 1, 2],
>>>                         [2, 4, 3]])
>>> A = dglsp.spmatrix(indices)
SparseMatrix(indices=tensor([[1, 1, 2],
                             [2, 4, 3]]),
             values=tensor([1., 1., 1.]),
             shape=(3, 5), nnz=3)

创建操作

spmatrix(indices[, val, shape])

从坐标格式索引创建稀疏矩阵。

val_like(mat, val)

使用新值从现有稀疏矩阵创建稀疏矩阵。

from_coo(行, 列[, 值, 形状])

从坐标列表(COO)创建一个稀疏矩阵,该列表存储一组(行,列,值)元组。

from_csr(indptr, indices[, val, shape])

从压缩稀疏行(CSR)格式创建稀疏矩阵。

from_csc(indptr, indices[, val, shape])

从压缩稀疏列(CSC)格式创建稀疏矩阵。

diag(val[, 形状])

基于对角线值创建一个稀疏矩阵。

identity(shape[, d, dtype, device])

创建一个在对角线上为1,其他地方为0的稀疏矩阵。

属性和方法

SparseMatrix.shape

返回稀疏矩阵的形状。

SparseMatrix.nnz

返回稀疏矩阵中非零元素的数量。

SparseMatrix.dtype

返回稀疏矩阵的数据类型。

SparseMatrix.device

返回稀疏矩阵所在的设备。

SparseMatrix.val

返回非零元素的值。

SparseMatrix.row

返回非零元素的行索引。

SparseMatrix.col

返回非零元素的列索引。

SparseMatrix.indices()

返回一个形状为(2, nnz)的张量中的坐标列表(COO)表示。

SparseMatrix.coo()

返回稀疏矩阵的坐标列表(COO)表示。

SparseMatrix.csr()

返回稀疏矩阵的压缩稀疏行(CSR)表示。

SparseMatrix.csc()

返回稀疏矩阵的压缩稀疏列(CSC)表示。

SparseMatrix.coalesce()

返回一个合并的稀疏矩阵。

SparseMatrix.has_duplicate()

Returns True if the sparse matrix contains duplicate indices.

SparseMatrix.to_dense()

返回稀疏矩阵的密集矩阵格式副本。

SparseMatrix.to([device, dtype])

执行矩阵数据类型和/或设备转换。

SparseMatrix.cuda()

将矩阵移动到GPU。

SparseMatrix.cpu()

将矩阵移动到CPU。

SparseMatrix.float()

将矩阵值转换为float32数据类型。

SparseMatrix.double()

将矩阵值转换为双精度数据类型。

SparseMatrix.int()

将矩阵值转换为int32数据类型。

SparseMatrix.long()

将矩阵值转换为长数据类型。

SparseMatrix.transpose()

返回此稀疏矩阵的转置。

SparseMatrix.t()

Alias of transpose()

SparseMatrix.T

Alias of transpose()

SparseMatrix.neg()

返回一个新的稀疏矩阵,其非零值为原矩阵的负数,相当于 -A

SparseMatrix.reduce([dim, rtype])

计算稀疏矩阵input沿给定维度dim的非零值的缩减。

SparseMatrix.sum([dim])

计算稀疏矩阵input沿给定维度dim的非零值的总和。

SparseMatrix.smax([dim])

计算稀疏矩阵input在给定维度dim上的非零值的最大值。

SparseMatrix.smin([dim])

计算稀疏矩阵input在给定维度dim上的非零值的最小值。

SparseMatrix.smean([dim])

计算稀疏矩阵input在给定维度dim上的非零值的平均值。

SparseMatrix.softmax([dim])

对稀疏矩阵在维度 :attr:dim 上的非零元素应用 softmax。

运算符

元素级运算符

add(A, B)

Elementwise addition for SparseMatrix, equivalent to A + B.

sub(A, B)

Elementwise subtraction for SparseMatrix, equivalent to A - B.

mul(A, B)

SparseMatrix进行逐元素乘法,等同于A * B

div(A, B)

Elementwise division for SparseMatrix, equivalent to A / B.

power(A, scalar)

逐元素指数运算 SparseMatrix,等同于 A ** scalar

矩阵乘法

matmul(A, B)

Multiplies two dense/sparse matrices, equivalent to A @ B.

spmm(A, X)

Multiplies a sparse matrix by a dense matrix, equivalent to A @ X.

bspmm(A, X)

将稀疏矩阵按批次乘以密集矩阵,等同于 A @ X

spspmm(A, B)

Multiplies a sparse matrix by a sparse matrix, equivalent to A @ B.

sddmm(A, X1, X2)

采样-密集-密集矩阵乘法 (SDDMM)。

bsddmm(A, X1, X2)

按批次进行采样-密集-密集矩阵乘法(SDDMM)。

非线性激活函数

softmax(input[, dim])

Applies softmax to the non-zero elements of the sparse matrix on the dimension :attr:dim.

广播操作符

sp_broadcast_v(A, v, op)

稀疏矩阵和向量的广播操作符。

sp_add_v(A, v)

稀疏矩阵和向量的广播加法。

sp_sub_v(A, v)

稀疏矩阵和向量的广播减法。

sp_mul_v(A, v)

稀疏矩阵和向量的广播乘法。

sp_div_v(A, v)

稀疏矩阵和向量的广播除法。