240626_昇思学习打卡-Day8-稀疏矩阵

news2024/10/6 16:31:12

240626_昇思学习打卡-Day8-稀疏矩阵

稀疏矩阵

在一些应用场景中,比如训练二值化图像分割时,图像的特征是稀疏的,使用一堆0和极个别的1表示这些特征即费事又难看,此时就可以使用稀疏矩阵。通过参考大佬博文,结合个人理解,记录如下:

CSR(Compressed Sparse Row Format)

CSR矩阵通过使用三个一维数组来存储矩阵,row,column和value(各作者可能叫法不同,实际意义相同)

img

假如我们有一个稀疏矩阵
[ 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的长度就是5,row的定义为每一行第一个非零元素在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

相对较为简单,仅存储非零元素及每个非零元素的坐标,可视化较强,也是通过使用三个一维数组来存储矩阵,row,column和value

img

对于一个稀疏矩阵
[ 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)
打卡图片:

image-20240626204852433

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十八课,函数基本语法规则

一,编程中函数的介绍 函数像一个黑盒子、加工厂、榨汁机等等(你能想到的任何类似的比喻),它会经过一个固定的规则将你送入其中的参数变成另一个样子、或者实现某种预想的功能(比如print()函数、input()函数、以及在tu…

npm-check【实用教程】升级项目中的依赖

安装 npm-check npm i -g npm-check检查项目中的依赖 npm-check会显示项目中没有使用,以及有新版本的依赖 升级项目中的依赖 npm-check -u方向键上下可以移动图中左侧的箭头空格键可选中/取消选中标注为 Major Update 和 Non-semver 类的版本,需去官网查…

对抗生成网络GANP52-

1.对抗生成网络的重点:有原始的输入,按照需求,生成新的数据。 eg1:超分辨率重构(首先先告诉神经网络什么是低分辨率,什么是高分辨率,让计算机学习两者的联系。 eg2:警察抓小偷的时候,由于录像太过模糊&…

STM32 HAL库里 串口中断回调函数是在怎么被调用的?

跟着正点原子学习的HAL库写串口接收程序的时候一直有困惑,使用HAL_UART_Receive_IT开启接收中断后,为啥处理函数要写在HAL_UART_RxCpltCallback里,中断发生的时候是怎么到这个回调函数里去的? void MX_USART1_UART_Init(void) {h…

three.js基础环境搭建

three.js three.js介绍安装threejs文件资源目录介绍本地静态服务器vscode配置live-server插件nodejs配置本地静态服务器项目的开发环境引入threejs 基础知识右手坐标系程序结构 three.js介绍 three.js官网 Three.js是一款基于WebGL的JavaScript 3D库,它使得开发者能…

【PythonWeb开发】Flask自定义模板路径和静态资源路径

在大型的 Flask 项目中,确实可能会有多个子应用(Blueprints),每个子应用可能都有自己的静态文件和模板。为了更好地管理和组织这些资源,可以使用static_folder 和template_folder 属性来统一管理。必须同时设置好主应用…

jenkins nginx自动化部署 php项目

在当今快速发展的IT领域,自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署(CI/CD)的佼佼者,结合Docker容器技术和PHP编程语言,以及Ansible自动化工具,可以实现高效、可靠的自动…

PHP 界的扛把子 Swoole 异步通信利器

大家好,我是码农先森。 引言 我今天主要介绍的内容是包括但不仅限于 Swoole ,也有一部分 Go 语言的内容。 为什么要介绍 Swoole ? 先说一说背景吧,我们项目组之前要为《香港 01》开发一个积分系统的项目,这个系统的主要功能包…

Spring Boot整合RocketMQ实现延迟消息消费

导包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version></dependency>添加配置信息 application配置文件 # rocketMq地址 rocketmq.name…

open()函数——打开文件并返回文件对象

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 open()函数用于打开文件&#xff0c;返回一个文件读写对象&#xff0c;然后可以对文件进行相应读写操作。 语法参考 open()函数的语法格式如下&…

Day 34:2368. 受限条件下可到达节点的数目

Leetcode 2368. 受限条件下可到达节点的数目 现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 &#xff0c;共有 n - 1 条边。 给你一个二维整数数组 edges &#xff0c;长度为 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一…

深度学习31-33

1.负采样方案 &#xff08;1&#xff09;为0是负样本&#xff0c;负样本是认为构造出来的。正样本是有上下文关系 负采样的target是1&#xff0c;说明output word 在input word之后。 2.简介与安装 &#xff08;1&#xff09;caffe:比较经常用于图像识别&#xff0c;有卷积网…

可以一键生成热点营销视频的工具,建议收藏

在当今的商业环境中&#xff0c;热点营销已经成为了一种非常重要的营销策略。那么&#xff0c;什么是热点营销呢&#xff1f;又怎么做热点营销视频呢&#xff1f; 最近高考成绩慢慢公布了&#xff0c;领导让结合“高考成绩公布”这个热点&#xff0c;做一个关于企业或产品的营销…

如何确保消息不被重复消费

一、重复消费问题出现的原因 导致重复消费的原因可能出现在生产者&#xff0c;也可能出现在 MQ 或 消费者。这里说的重复消费问题是指同一个数据被执行了两次&#xff0c;不单单指 MQ 中一条消息被消费了两次&#xff0c;也可能是 MQ 中存在两条一模一样的消费。 生产者&…

【新闻】全球热钱,正在流入新加坡 这个夏天有点猛,油价看涨? 普华永道已丢了六成“A股大客户”

新加坡成为全球投资焦点&#xff0c;吸引大量并购活动。预计经济增长2.4%&#xff0c;股指上涨8%。未来可期待更多国际投资涌入。 近期&#xff0c;新加坡成为全球投资者的焦点&#xff0c;吸引了大量的并购和投资活动。 据报道&#xff0c;2024年第二季度&#xff0c;新加坡…

【活动】搜维尔科技携Xsens邀您出席世界人工智能大会

展会介绍 由外交部、国家发展改革委、教育部、科技部、工业和信息化部、国家网信办、中国科学院、中国科协和上海市政府共同主办的世界人工智能大会&#xff08;WAIC&#xff09;&#xff0c;将于7月4日-7日在上海举行。围绕“以共商促共享 以善治促善智”主题&#xff0c;打造…

ElementUI搭建

概述 Element&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组 件库. 安装 ElementUI npm 安装 推荐使用 npm 的方式安装&#xff0c;它能更好地和 webpack 打包工具配合使用。 npm i element-ui -S 在控制台输入此命令来安装ElementUI 在 main.j…

调用京灵平台接口,很详细

调用京灵平台接口&#xff0c;很详细 一、准备1、开发资源2、申请环境 二、测试接口调用1、查看接口文档2、查看示例代码3、引入对应依赖4、改造后需要的依赖5、测试调用 三、工具类1、配置dto2、公共参数dto3、请求参数dto4、响应参数dto4、调用工具类&#xff08;重要&#x…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源&#xff1a;https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站&#xff1a;OPEN IMAGES 2、准备标签labels 网站&#xff1a;CVAT 有点是&#xff1a;支持直接导出yolo格式的标…

Stirling-PDF 安装和使用教程

PDF (便携式文档格式) 目前已经成为了文档交换和存储的标准。然而&#xff0c;找到一个功能全面、安全可靠、且完全本地化的 PDF 处理工具并不容易。很多在线 PDF 工具存在隐私和安全风险&#xff0c;而桌面软件往往价格昂贵或功能有限。那么&#xff0c;有没有一种解决方案能够…