首页
学习
活动
专区
圈层
工具
发布

稀疏矩阵的概念介绍

所以科学家们找到的一种既能够保存信息,又节省内存的方案:我们称之为“稀疏矩阵”。 背景 Pandas的DataFrame 已经算作机器学习中处理数据的标配了 ,那么稀疏矩阵的真正需求是什么?...什么是稀疏矩阵? 有两种常见的矩阵类型,密集和稀疏。主要区别在于稀疏指标有很多零值。密集的指标没有。这是一个具有 4 列和 4 行的稀疏矩阵的示例。 在上面的矩阵中,16 个中有 12 个是零。...这就引出了一个简单的问题: 我们可以在常规的机器学习任务中只存储非零值来压缩矩阵的大小吗? 简单的答案是:是的,可以! 我们可以轻松地将高维稀疏矩阵转换为压缩稀疏行矩阵(简称 CSR 矩阵)。...对于这种压缩我们的要求是压缩后的矩阵可以应用矩阵运算并以有效的方式访问指标,所以CSR并不是唯一方法,还有有更多的选项来存储稀疏矩阵。...所以可以理解为将这些数据转换为稀疏矩阵是值得的,因为能够节省很多的存储。 那么如何判断数据的稀疏程度呢?使用NumPy可以计算稀疏度。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    稀疏矩阵的压缩方法

    2.6.2 稀疏矩阵压缩 我们已经可以用Numpy中的二维数组表示矩阵或者Numpy中的np.mat()函数创建矩阵对象,这样就能够很方便地完成有关矩阵的各种运算。...对分块稀疏矩阵按行压缩 coo_matrix 坐标格式的稀疏矩阵 csc_matrix 压缩系数矩阵 csr_matrix 按行压缩 dia_matrix 压缩对角线为非零元素的稀疏矩阵 dok_matrix...字典格式的稀疏矩阵 lil_matrix 基于行用列表保存稀疏矩阵的非零元素 下面以csr_matrix为例进行演示。...m引用的被压缩过的矩阵,从输出信息可知,其中保存了 个元素,也就意味着对应的稀疏矩阵中都是零元素。...[0, 0, 3, 0, 0, 0, 0, 0]], dtype=int64) 为了便于对照理解前述对稀疏矩阵 的压缩分析,下面的程序中就创建了该矩阵,并用 CSR 压缩。

    5.7K20

    稀疏矩阵的概念介绍

    所以科学家们找到的一种既能够保存信息,又节省内存的方案:我们称之为“稀疏矩阵”。 背景 Pandas的DataFrame 已经算作机器学习中处理数据的标配了 ,那么稀疏矩阵的真正需求是什么?...有两种常见的矩阵类型,密集和稀疏。主要区别在于稀疏指标有很多零值。密集的指标没有。这是一个具有 4 列和 4 行的稀疏矩阵的示例。 在上面的矩阵中,16 个中有 12 个是零。...这就引出了一个简单的问题: 我们可以在常规的机器学习任务中只存储非零值来压缩矩阵的大小吗? 简单的答案是:是的,可以! 我们可以轻松地将高维稀疏矩阵转换为压缩稀疏行矩阵(简称 CSR 矩阵)。...对于这种压缩我们的要求是压缩后的矩阵可以应用矩阵运算并以有效的方式访问指标,所以CSR并不是唯一方法,还有有更多的选项来存储稀疏矩阵。...这意味着,超过 90% 的数据点都用零填充。回到嘴上面的图,这就是上面我们看到为什么pandas占用内存多的原因。 我们为什么要关心稀疏矩阵? 好吧,使用稀疏矩阵有很多很好的理由。

    1.4K30

    推荐系统为什么使用稀疏矩阵?如何使用python的SciPy包处理稀疏矩阵

    这意味着当我们在一个矩阵中表示用户(行)和行为(列)时,结果是一个由许多零值组成的极其稀疏的矩阵。 ? 在真实的场景中,我们如何最好地表示这样一个稀疏的用户-项目交互矩阵?...,可以获得时间和空间的最佳性能。...创建一个完整的矩阵并将其转换为一个稀疏矩阵 some_dense_matrix = np.random.random(600, 600) some_sparse_matrix = sparse.csr_matrix...创建一个空的稀疏矩阵 # format: csr_matrix((row_len, col_len)) empty_sparse_matrix = sparse.csr_matrix((600, 600...)) 注意,我们不应该创建一个空的稀疏矩阵,然后填充它们,因为csr_matrix被设计为一次写、一次读多。

    3.1K20

    【踩坑】探究PyTorch中创建稀疏矩阵的内存占用过大的问题

    转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 问题复现 原因分析 解决方案 碎碎念 问题复现 创建一个COO...格式的稀疏矩阵,根据计算公式,他应该只占用约5120MB的内存: 但通过nvidia-smi查看,实际上占用了10240MB: 网上对此的讨论又是没有找到,只好又是自己一点点摸索...因此,很明显这多出来的内存占用,实际上是reserved_bytes搞的。 活跃内存(Active Memory):指当前正在使用的显存量,包括已经分配并且正在使用的内存。...总的来说,保留的所有内存总量是由系统根据实时的内存使用情况和策略进行动态调整和触发的。它的目的是优化内存的分配和释放,以提高系统的性能和稳定性。...比如以下这个连续创建矩阵的,那么在创建第二个矩阵的时候,就不会再去申请新的内存,而是会放在保留内存里。

    47210

    稀疏矩阵的压缩存储与高效运算

    稀疏矩阵的压缩存储与高效运算随着数据科学、图计算与机器学习的迅猛发展,稀疏矩阵已成为大规模数据处理中不可或缺的一种数据结构。...本文将系统地介绍稀疏矩阵的压缩存储方式,并结合代码实例,探讨其在高效运算中的应用策略。一、稀疏矩阵概述在实际工程和科研中,我们常会遇到这样一种矩阵:大多数元素为零,仅有极少数的非零元素。...PyTorch Sparse深度学习框架中的稀疏张量支持 稀疏神经网络、图神经网络 cuSPARSE NVIDIA 提供的 GPU 稀疏矩阵库 高性能计算、深度学习推理...八、性能评估:稀疏 vs 稠密以一个 10000x10000 的稀疏矩阵(仅含 0.01% 非零元素)为例,我们比较其在不同存储方式下的运算时间与内存消耗。...十、结语稀疏矩阵的压缩存储与高效运算,是连接数学、计算机体系结构与人工智能的桥梁。掌握稀疏矩阵不仅能提升算法性能,更为你打通处理大规模数据的新路径。

    1.5K10

    python的高级数组之稀疏矩阵

    稀疏矩阵的定义: 具有少量非零项的矩阵(在矩阵中,若数值0的元素数目远多于非0元素的数目,并且非0元素分布没有规律时,)则称该矩阵为稀疏矩阵;相反,为稠密矩阵。...非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。 稀疏矩阵的两个动机:稀疏矩阵通常具有很大的维度,有时甚大到整个矩阵(零元素)与可用内存不想适应;另一个动机是避免零矩阵元素的运算具有更好的性能。...稀疏矩阵的格式 存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够容易实现矩阵的各种运算。...CSR、CSC是用于矩阵-矩阵和矩阵-向量运算的有效格式,LIL格式用于生成和更改稀疏矩阵。Python不能自动创建稀疏矩阵,所以要用scipy中特殊的命令来得到稀疏矩阵。...: Numpy包的命令eye、identity、diag和rand都有其对应的稀疏矩阵,这些命令需要额外的参数来指定所得矩阵的稀疏矩阵格式。

    3.4K10

    一种稀疏矩阵的实现方法

    https://blog.csdn.net/tkokof1/article/details/82895970 本文简单描述了一种稀疏矩阵的实现方式,并与一般矩阵的实现方式做了性能和空间上的对比...[,] m_elementBuffer; } 实现方式简单直观,但是对于稀疏矩阵而言,空间上的浪费比较严重,所以可以考虑以不同的方式来存储稀疏矩阵的各个元素....纵坐标是数据比值(普通矩阵的对应数值/稀疏矩阵的对应数值),各条折线代表不同的矩阵密度(矩阵非0元素个数/矩阵所有元素个数)....结论 当矩阵密度较小时(稀疏矩阵在运算效率和内存占用上都优于普通矩阵,在密度极小时(稀疏矩阵在这两方面的优势是普通矩阵的数十倍(甚至上百倍),但随着矩阵密度的增加(>...0.016),稀疏矩阵的运算效率便开始低于普通矩阵,并且内存占用的优势也变的不再明显,甚至高于普通矩阵.考虑到矩阵的临界密度较低(0.016,意味着10x10的矩阵只有1-2个非0元素),所以实际开发中不建议使用稀疏矩阵的实现方式

    1.3K10

    【踩坑】稀疏矩阵的内存占用竟然比密集矩阵更高?

    转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 背景说明 稀疏矩阵主打的就是一个内存占用更小,但我使用中发现,稀疏矩阵并不是一直都是内存更小的...问题分析 这是COO格式的稀疏矩阵和strided密集矩阵的内存占用计算方法: 我们假设矩阵的大小是(16384, 16384),并且在这里我们将稀疏度定义为零元素的比例...那么: 密集矩阵内存为:16384 x 16384 x 4 / 1024 / 1024 = 1024 MB; 对于稀疏度为0(也就是等同于密集矩阵)的COO,内存为:(2 x 8 + 4) x (16384...当稀疏度为0.8时,COO内存占用为5120 x (1 - 0.8) = 1024MB,与密集矩阵持平。 因此,当稀疏度大于0.8的时候,内存占用才开始真正低于密集矩阵。...结论总结 1、稀疏矩阵并不一定总是比密集矩阵的内存使用量更低; 2、零元素的比例越高,内存越节省; 3、COO是最基础的稀疏矩阵格式,还有其他如CSR等更优的格式可以选择

    11900

    如何写成高性能的代码(三):巧用稀疏矩阵节省内存占用

    ,这个矩阵是一个明显的稀疏矩阵。...稀疏矩阵的存储方式及优化 直接存储为二维矩阵 直接使用二维矩阵会简单直接地存储整个电子表格,这样你不必每次都创建或删除一段内存。...如果我们在项目开发中需要存储类似结构的数据,稀疏矩阵这种存储方式,无论从时间还是空间上都能大大的提成性能。...由于底层采用了稀疏矩阵来优化存储,SpreadJS在前端页面中,实现了100W级别数据秒级响应的能力: 纯前端百万级数据请求、加载、筛选和排序 点击此处可以在线体验:性能演示 同时,结合SpreadJS...中使用的Canvas 绘制模型,双缓存画布渲染等专利技术,让SpreadJS的前端性能相比于同类产品遥遥领先。

    1.4K20

    【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

    对称矩阵:指矩阵中的元素关于主对角线对称的矩阵。由于对称矩阵的非零元素有一定的规律,可以只存储其中一部分元素,从而减少存储空间。 稀疏矩阵:指大部分元素为零的矩阵。...稀疏矩阵的压缩存储——三元组表 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表 e....压缩稀疏行(Compressed Sparse Row,CSR)矩阵   压缩稀疏行(Compressed Sparse Row,CSR)是一种常用的稀疏矩阵存储格式。...CSR存储格式的主要优点是有效地压缩了稀疏矩阵的存储空间,只存储非零元素及其对应的行和列信息。此外,CSR格式还支持高效的稀疏矩阵向量乘法和稀疏矩阵乘法等操作。...接受矩阵的行数、列数和非零元素的个数作为参数,并返回创建的CSR矩阵。

    59010

    有限元| 梁单元的另一种刚度矩阵

    在梁单元的4个节点自由度中,和的单位不同,现在用 \hat{\theta} = l\theta \quad (1) 将单位统一起来。其中是单元长度。...梁的挠度 \begin{split} \omega &= N_1\omega_1 + N_2\hat{\theta_1} + N_3\omega_2 + N_4\hat{\theta_2} \\ &=...} \hat{\mathbf d}\\ \end{split} \quad (4) 其中 \hat{\mathbf B} = [-6+12\xi,4-6\xi,6-12\xi,2-6\xi] 单元刚度矩阵...,采用一个单元,则单元刚度方程为 \frac {2EI}{l^3}\begin{bmatrix} 6& 3& -6& -3 \\ -3& 2& 3& 1 \\ -6& 3& 6& 3 \\ -3& 1&...有限元法把复杂结构离散到有限个单元,再把这种理想化的假定和力学控制方程施加于结构内部的每一个单元,然后通过单元分析组装得到结构总刚度方程,通过边界条件和其他约束解得每个单元的反应,这样就可以避免直接建立复杂结构的力学和数学模型了

    32310

    平面四边形等参单元(Q4)的刚度矩阵

    坐标系(物理坐标系)下Q4单元的刚度矩阵为 此时应变矩阵 是 的函数 其中 单元刚度矩阵,等效节点荷载,单元应力,应变等物理量是通过 坐标系表达,而在计算时却是在 坐标系下。...因此 此时应变矩阵 是 的函数 两个坐标系下坐标转换的桥梁为 其中 是 坐标系中单元四个顶点坐标, 是形函数 坐标系中任意函数 在坐标系 的表达式为 ,根据链式求导法则...或者 其中, 是雅可比矩阵 其中 由此可得 将 换成形函数 例如 在 坐标系下 则 k是 矩阵,若将 看作函数 ,则 也是 列阵。...注意 是积分点的坐标。 等参数单元(简称等参元)就是对单元几何形状和单元内的参变量函数采用相同数目的节点参数和相同的形函数进行变换而设计出的一种单元类型。...优点:由于等参变换的采用使等参单元的刚度、质量、阻尼、荷载等特性矩阵的计算在规则域内进行,因此不管矩阵表示的被积函数如何复杂,仍然可知以方便地采用标准化的数值积分方法计算。

    3K11

    【数据结构】数组和字符串(六):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏列(Compressed Sparse Column,CSC)

    但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。...对称矩阵:指矩阵中的元素关于主对角线对称的矩阵。由于对称矩阵的非零元素有一定的规律,可以只存储其中一部分元素,从而减少存储空间。 稀疏矩阵:指大部分元素为零的矩阵。...稀疏矩阵的压缩存储——三元组表 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表 e....压缩稀疏行(Compressed Sparse Row,CSR)矩阵 【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR) f....接受矩阵的行数、列数和非零元素的个数作为参数,并返回创建的CSC矩阵。

    55910

    基于稀疏大规模矩阵的多目标进化算法简介

    简介 可以看到本文的特色图片是个极度稀疏连接的神经网络,它是由我们即将介绍论文中的算法SparseEA得到的。...论文提出了一种解决大规模稀疏问题的多目标算法,大规模稀疏存在于许多领域:机器学习、数据挖掘、神经网络。...作者主要讨论了四个具体的问题 ①特征选择 ②模式挖掘 ③关键节点检测 ④神经网络训练 上面四个问题虽然存在于不同领域,但是它们都属于多目标问题,它们的pareto面的解集都是稀疏的。...算法的贡献 ①设计了新的种群初始化策略(根据稀疏大规模特性,能够获得一个很好的前沿面) ②设计了新的基于pareto解集稀疏性的遗传算子 具体算法 算法框架 类似于NSGA2的框架 ?...因此,生成的子代不会有同样数量的0和1,并且可以保持子代的稀疏度。 ? 采用交叉变异后的结果: ? 可以看到,通过此策略,提高了稀疏度,被置为1的维度越来越少。

    92930

    CSR存储刚度矩阵

    CSR(Compressed Sparse Row Storage Format)是一种非常有效的稀疏矩阵的存储方法,它按行将稀疏矩阵存储在一个一维实型数组中,另外需要建立2个整形一维数组,一个整形数组按行存储每个非零元素所在列的位置...,另一个整形数组存储矩阵每行第一个非零元素所在的位置。...例如,对稀疏矩阵A采用CSR存储 ? 当刚度矩阵规模很大时,CSR存储节约内存的优势能够很好的体现出来。用迭代法求解方程组,刚度矩阵不会产生填充,即零元素位置经迭代计算后还是零元素。...并且在计算过程中主要是矩阵和向量的乘积或者向量之间的点积,刚度矩阵结构不会发生变化,因此,CSR存储方式是采用迭代法求解方程组时刚度矩阵的一种有效存储方式。 点击一维变带宽查看一维变带宽存储刚度矩阵。

    1.9K50
    领券