CSR存储原理
最近老师让看一看模型剪枝方面的知识,偶然从某一篇论文上看到了CSR和CSC格式存储的原理,因此想纪录一下,本文主要分析了一下CSR格式存储稀疏矩阵的原理,CSC格式与其类似,只是一个针对行,一个针对列。
原理图
首先上图,观察图基本就可以了解其存储的形式了,CSR主要通过数值,非零元素列下标,行偏移量来进行存储,能将一个m*n的矩阵的存储数量减小至2a+m+1(CSR)和2a+n+1(CSC)。a是非零元素的个数。
如上图,矩阵 A共有9个非零元素,各非零元素依次存储,同时纪录下每个非零元素的列下标(上图下标以0开始计数),行偏移量则包含两个部分,前m个元素表示每一行第一个非零元素在数值中的索引,如A矩阵行偏移量前4个元素为0,2,4,7,数值中的0索引是1,2索引是2,4索引是5……依次类推。行偏移量的最后一部分则是矩阵非零元素的个数(在一些下标以1开始计数时,最后一项的数值是非零元素+1)。CSC的原理与CSR类似,所不同的就是按照列进行存储的。
参考文献
文章是个人对CSR格式存储原理的理解,如有什么不对的地方,望各位大佬指正,文章图片来源于下面这篇论文:
基于剪枝的卷积神经网络压缩方法研究(靳丽蕾)