dgl.sparse

dgl.sparse 是一个用于稀疏操作的库,这些操作常用于图神经网络模型中。

稀疏矩阵类

class dgl.sparse.SparseMatrix[source]

可以使用 spmatrix() 构造函数从坐标格式的索引创建 SparseMatrix

>>> 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(row, col[, val, shape])

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

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

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

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

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

diag(val[, shape])

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

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

创建一个对角线上为一、其他地方为零的稀疏矩阵。

属性和方法

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()

如果稀疏矩阵包含重复索引,则返回 True

SparseMatrix.to_dense()

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

SparseMatrix.to([device, dtype])

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

SparseMatrix.cuda()

将矩阵移动到 GPU。

SparseMatrix.cpu()

将矩阵移动到 CPU。

SparseMatrix.float()

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

SparseMatrix.double()

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

SparseMatrix.int()

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

SparseMatrix.long()

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

SparseMatrix.transpose()

返回该稀疏矩阵的转置。

SparseMatrix.t()

transpose() 的别名

SparseMatrix.T

transpose() 的别名

SparseMatrix.neg()

返回一个新的稀疏矩阵,其非零值为原始值的负值,等同于 -A

SparseMatrix.reduce([dim, rtype])

计算输入稀疏矩阵沿给定维度 dim 的非零值的归约。

SparseMatrix.sum([dim])

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

SparseMatrix.smax([dim])

计算输入稀疏矩阵沿给定维度 dim 的非零值的最大值。

SparseMatrix.smin([dim])

计算输入稀疏矩阵沿给定维度 dim 的非零值的最小值。

SparseMatrix.smean([dim])

计算输入稀疏矩阵沿给定维度 dim 的非零值的平均值。

SparseMatrix.softmax([dim])

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

操作

逐元素操作

add(A, B)

SparseMatrix 的逐元素加法,等同于 A + B

sub(A, B)

SparseMatrix 的逐元素减法,等同于 A - B

mul(A, B)

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

div(A, B)

SparseMatrix 的逐元素除法,等同于 A / B

power(A, scalar)

SparseMatrix 的逐元素求幂,等同于 A ** scalar

矩阵乘法

matmul(A, B)

乘以两个密集/稀疏矩阵,等同于 A @ B

spmm(A, X)

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

bspmm(A, X)

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

spspmm(A, B)

将稀疏矩阵乘以稀疏矩阵,等同于 A @ B

sddmm(A, X1, X2)

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

bsddmm(A, X1, X2)

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

非线性激活函数

softmax(input[, dim])

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

广播操作

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)

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