Paddle 稀疏计算 使用指南

Paddle 稀疏计算 使用指南

1. 稀疏格式介绍

1.1 稀疏格式介绍

稀疏矩阵是一种特殊的矩阵,其中绝大多数元素为0。与密集矩阵相比,稀疏矩阵可以节省大量存储空间,并提高计算效率。

例如,一个5x5的矩阵中只有3个非零元素:

import paddle

dense_tensor = paddle.to_tensor([[0, 0, 0, 0, 6], 
                                  [0, 0, 0, 2, 0],
                                  [0, 0, 0, 0, 0],
                                  [0, 8, 0, 0, 0],
                                  [0, 0, 0, 0, 0]], stop_gradient=False)

由于稀疏矩阵中大多数元素为0, 因此我们无需为这些 0 元素单独分配存储空间, 可以只存储非零元素的值和索引信息, 从而节省存储空间。

1.2 稀疏矩阵的存储格式

1.2.1 COO 格式

COO(Coordinate) 格式是最直接的稀疏存储方式,它将非零元素的值和对应的行列索引分别存储在两个向量中。

import paddle
from paddle.sparse import sparse_coo_tensor

# 构建稀疏 COO 张量 
indices = [[0, 1, 2], [1, 2, 0]]
values = [1.0, 2.0, 3.0]
dense_shape = [3, 3]
coo = sparse_coo_tensor(indices, values, dense_shape)
print(coo)
# Tensor(shape=[3, 3], dtype=paddle.float32, place=Place(cpu), stop_gradient=True, 
#        indices=[[0, 1, 2],
#                 [1, 2, 0]], 
#        values=[1., 2., 3.])

上面代码中, indices 存储了非零元素的行列索引, values 存储了非零元素的值, dense_shape 存储了稀疏张量的形状。 实际上它存储的数据是:

[[0, 1, 0],
 [0, 0, 2],
 [3, 0, 0]]

下图更好的展示了 COO 格式的稀疏矩阵:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.2.2 CSR 格式

CSR(Compressed Sparse Row) 格式按行存储压缩矩阵的非零元素。每一行中的非零元素用连续的储存空间存储, 从而可以高效地访问矩阵中同一行的数据。

下面是一个 CSR 格式的稀疏矩阵示例:

import paddle
from paddle.sparse import sparse_csr_tensor

# 构建稀疏 CSR 张量
crows = [0, 2, 3, 5]
cols = [1, 3, 2, 0, 1]
values = [1, 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值