建行官网网站,百度抓取不到网站,wordpress用户数据备份,网站分成比例系统怎么做240626_昇思学习打卡-Day8-稀疏矩阵
稀疏矩阵
在一些应用场景中#xff0c;比如训练二值化图像分割时#xff0c;图像的特征是稀疏的#xff0c;使用一堆0和极个别的1表示这些特征即费事又难看#xff0c;此时就可以使用稀疏矩阵。通过参考大佬博文#xff0c;结合个人理…240626_昇思学习打卡-Day8-稀疏矩阵
稀疏矩阵
在一些应用场景中比如训练二值化图像分割时图像的特征是稀疏的使用一堆0和极个别的1表示这些特征即费事又难看此时就可以使用稀疏矩阵。通过参考大佬博文结合个人理解记录如下
CSRCompressed Sparse Row Format
CSR矩阵通过使用三个一维数组来存储矩阵rowcolumn和value各作者可能叫法不同实际意义相同 假如我们有一个稀疏矩阵 [ 1 7 0 0 0 2 8 0 5 0 3 9 0 6 0 4 ] \left[ \begin{matrix} 1 7 0 0 \\ 0 2 8 0 \\ 5 0 3 9 \\ 0 6 0 4 \\ \end{matrix} \right] 1050720608300094 此时我们可以轻易地看出
value([1,7,2,8,5,3,9,6,4]) # 里面所有的非零项从左往右从上往下拿出来
shape(4,4)对于row和column来说就比较难看了相对来说column较简单column就是每一个非零数对应的列数我们对照着value来看
对value的第一个值1他在稀疏矩阵中第一行第一列换成索引就是0行0列此时他在column中的值就是0列
对value的第二个值7他在稀疏矩阵中第一行第二列换成索引就是0行1列此时他在column中的值就是1列
对value的第三个值2他在稀疏矩阵中第二行第二列换成索引就是1行1列此时他在column中的值就是1列
对value的第四个值8他在稀疏矩阵中第二行第三列换成索引就是1行2列此时他在column中的值就是2列
对value的第五个值5他在稀疏矩阵中第三行第一列换成索引就是2行0列此时他在column中的值就是0列
对value的第六个值3他在稀疏矩阵中第三行第三列换成索引就是2行2列此时他在column中的值就是2列
对value的第七个值9他在稀疏矩阵中第三行第四列换成索引就是2行3列此时他在column中的值就是3列
对value的第八个值6他在稀疏矩阵中第四行第二列换成索引就是3行1列此时他在column中的值就是1列
对value的第九个值4他在稀疏矩阵中第四行第四列换成索引就是3行3列此时他在column中的值就是3列
所以得到column的值为
column([0,1,1,2,0,2,3,1,3])然后让我们来关注row的值row的长度是原张量的行数1比如此处原张量为4行所以我们row的长度就是5row的定义为每一行的第一个非零元素在value中的位置这也才4个数所以还要再加一个value的总长度说的比较抽象以下举例说明
首先第一行第一行的第一个非零元素1在value中位于第一个转换成索引就是0所以第一行在row中的值就是0。
其次第二行第二行的第一个非零元素2在value中位于第三个转换成索引就是2所以第二行在row中的值就是2。
其次第三行第三行的第一个非零元素5在value中位于第五个转换成索引就是4所以第三行在row中的值就是4。
其次第四行第四行的第一个非零元素6在value中位于第八个转换成索引就是7所以第四行在row中的值就是7。
其次第五行欸等等第五行在哪呢。没有的啦row中第五个元素就是value的总长度啦所以第五个值就是9。
所以row的值就出来咯
row([0,2,4,7,9])COOTensor
相对较为简单仅存储非零元素及每个非零元素的坐标可视化较强也是通过使用三个一维数组来存储矩阵rowcolumn和value 对于一个稀疏矩阵 [ 1 7 0 0 0 2 8 0 5 0 3 9 0 6 0 4 ] \left[ \begin{matrix} 1 7 0 0 \\ 0 2 8 0 \\ 5 0 3 9 \\ 0 6 0 4 \\ \end{matrix} \right] 1050720608300094 value、shape、column值都和CSR矩阵相同
value([1,7,2,8,5,3,9,6,4]) # 里面所有的非零项从左往右从上往下拿出来
shape(4,4)
column([0,1,1,2,0,2,3,1,3])row有所不同此时的row代表的是每一个非零元素在第几行比如
第一个非零元素1在第一行行索引为0所以该元素对应的row值为0。
第二个非零元素7在第一行行索引为0所以该元素对应的row值为0。
第三个非零元素2在第二行行索引为1所以该元素对应的row值为1。
第四个非零元素8在第二行行索引为1所以该元素对应的row值为1。
第五个非零元素5在第三行行索引为2所以该元素对应的row值为2。
第六个非零元素3在第三行行索引为2所以该元素对应的row值为2。
第七个非零元素9在第三行行索引为2所以该元素对应的row值为2。
第八个非零元素6在第四行行索引为3所以该元素对应的row值为3。
第九个非零元素4在第四行行索引为3所以该元素对应的row值为3。
所以该矩阵的row为
row([0,0,1,1,2,2,2,3,3])参考博客
稀疏矩阵的存储格式 | Xiang的博客 (flyxu.github.io) 打卡图片