神经网络中矩阵稀疏性的编码方式

背景

神经网络的计算基本上是以高维Tensor的形式存在的。高维Tensor如何利用各种稀疏性来计算,因此问题就归结成如何编码这些稀疏性。

稀疏性编码的方式

英伟达关于常见的稀疏性编码的方式
scipy的稀疏性编码的库
在英伟达的这个pdf中,我认为最重要的一个结论是:一个稀疏编码方式的效率(存储空间)和稀疏的分布是息息相关的。

COO

COO用三个(row, col, data)数组来存储稀疏矩阵。这个就很简单了。
在这里插入图片描述
对应的scipy的定义是
在这里插入图片描述
在这里插入图片描述

CSR

在这里插入图片描述

CSR使用三个(row, col,value),row数组的大小等于原矩阵的行+1.这有点像前缀和的感觉,也就是在row数组中row[i+1]-row[i]的数值是原矩阵matrix中第i行的non-zeros的数量。同时row[i+1]也是i+1行第一个非零元素在value数组中的偏移位置。
CSR对应的scipy的方式是:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

COO和CSR这两种编码方式只有当稀疏度很大,也就是原matrix中的0值元素很多的时候,编码方式才是有效果的。对于比较有结构的,而且比较稠密的,存储真滴拉跨。例如我们数组里面存的是int8,然后我们用一个4*4数组为例,数组是这个样子的:
在这里插入图片描述

然后CSR的表示形式是

indptr = np.array([0, 3, 3, 6, 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值