当前位置: 首页 > news >正文

pythonsvd内存不足_python – 有没有办法防止numpy.linalg.svd内存不足?

如果你的情况是MxN 1000000×3 matrixnumpy.linalg.svd不需要M == N.实际上,这正是SVD可以用来计算秩和伪逆等事物的地方.诸如linalg.inv之类的方法需要一个square(和满秩)矩阵来获得定义的结果.

@Saullo Castro是对的. full_matrices = False可以变得难以处理,因为Ux矩阵不是1Mx1M元素,而是1Mx3,这是一个巨大的节省.我不确定哪种减少的SVD算法numpy使用(我认为它可能是Compact SVD,或者很薄):3个广泛使用的简短描述在维基百科上:http://en.wikipedia.org/wiki/Singular_value_decomposition在Reduced SVDs部分.它们都围绕着减少完整U矩阵的计算,减少形式,这对于一些甚至许多问题已经足够了.当numberObservations>> numberFeatures时,节省最多

关于你是否得到相同的结果.简短的回答可能是肯定的,具体取决于您将对SVD结果做些什么.例如,您将获得与原始格式相同的矩阵(缩放容差级别)和缩小格式,如下面的代码所示.请注意,在大写的情况下,U的大小是numberObservations x numberObservations,而在full_matrices = False中,U的大小是numberObservations x numberFeatures

此代码改编自numpy.linalg.svd doc,允许用户试验任意行/列,选择奇异值.

可以总是将U矩阵的大小减小到M×min(M,N).根据您的数据结构和存在的噪音,可能会进一步减少.仅仅因为numpy.isclose为false并不意味着计算出的SV对所有上下文都不好.您可以使用mostSignificantSingularValues变量对此进行试验,该变量取自完整SVD的顶部SV.

numberObservations = 900

numberFeatures = 600

mostSignificantSingularValues = 600

a = np.random.randn( numberObservations, numberFeatures) + 1j*np.random.randn(numberObservations, numberFeatures)

#Reconstruction based on full SVD:

U, s, V = np.linalg.svd(a, full_matrices=True)

print(U.shape, V.shape, s.shape)

S = np.zeros((numberObservations, numberFeatures), dtype=complex)

S[:mostSignificantSingularValues, :mostSignificantSingularValues] = np.diag(s[:mostSignificantSingularValues])

print(np.allclose(a, np.dot(U, np.dot(S, V))))

d1 = a - np.dot(U, np.dot(S, V))#

#True

#Reconstruction based on reduced SVD:

U, s, V = np.linalg.svd(a, full_matrices=False)

print(U.shape, V.shape, s.shape)

S = np.diag(s)

print(np.allclose(a, np.dot(U, np.dot(S, V))))

d2 = a - np.dot(U, np.dot(S, V))#

相关文章:

  • python 统计分析apache日志_Apache 日志分析(一)
  • mysql中groupby会用到索引吗_MySQL优化GROUP BY方案
  • php5.6的apaches的dll_win7(64位)php5.6-Apache2.4-mysql5.6环境安装
  • freemarker反向取数_freemarker 取值(插值)(转)
  • miui 谷歌框架_谷歌和高通正式联手,加强安卓系统掌控,华为:鸿蒙正全面超越...
  • python 随机打乱列表_python打乱列表
  • 图片画圈画箭头用什么软件_什么软件可以在编辑图片中画圈圈,如裁图时需要特..._网络编辑_帮考网...
  • 0 win10重装partition_gpt分区无法安装win10的根本原因
  • python csv库下载_Python标准库--csv模块
  • kafka身份认证 maxwell_python – kafka身份验证和授权
  • python类的封装是什么意思_Python中什么是面向对象-封装
  • 瑞银监控机器人组装法_“机器人革命”来了!瑞银计划年内再扩充400台自动化机器人...
  • laravel 控制器中使用中间件_热式气体质量流量控制器在流量监测和气压测试中的使用情况...
  • linux vim 添加注释_【Linux】Vim编辑器-批量注释与反注释
  • arduino判断是否连接串口_Arduino-串口函数Serial
  • [笔记] php常见简单功能及函数
  • Odoo domain写法及运用
  • PaddlePaddle-GitHub的正确打开姿势
  • Shell编程
  • Spring Cloud中负载均衡器概览
  • Travix是如何部署应用程序到Kubernetes上的
  • V4L2视频输入框架概述
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 机器学习 vs. 深度学习
  • 排序(1):冒泡排序
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • nb
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (12)Hive调优——count distinct去重优化
  • (2)STL算法之元素计数
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (C++17) optional的使用
  • (待修改)PyG安装步骤
  • (分布式缓存)Redis持久化
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (强烈推荐)移动端音视频从零到上手(上)
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)shell调试方法
  • (转)关于pipe()的详细解析
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core 2.1路线图
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET程序员迈向卓越的必由之路
  • .NET命令行(CLI)常用命令
  • ??myeclipse+tomcat
  • @SuppressWarnings注解
  • [ C++ ] STL---仿函数与priority_queue
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)