首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Numpy中的SVD分解得到负S值?

从Numpy中的SVD分解得到负S值?
EN

Stack Overflow用户
提问于 2019-03-12 14:37:22
回答 1查看 909关注 0票数 4

我想使用ZCA来白化CIFAR10数据集。输入的X_train是形状(40000、32、32、3),其中40000是图像的数量,32x32x3是每个图像的大小。为此,我使用了来自这个答案的代码:

代码语言:javascript
运行
AI代码解释
复制
X_flat = np.reshape(X_train, (-1, 32*32*3))
# compute the covariance of the image data
cov = np.cov(X_flat, rowvar=True)   # cov is (N, N)
# singular value decomposition
U,S,V = np.linalg.svd(cov)     # U is (N, N), S is (N,)
# build the ZCA matrix
epsilon = 1e-5
zca_matrix = np.dot(U, np.dot(np.diag(1.0/np.sqrt(S + epsilon)), U.T))
# transform the image data       zca_matrix is (N,N)
zca = np.dot(zca_matrix, X_flat)    # zca is (N, 3072)

但是,在运行时,我遇到了以下警告:

代码语言:javascript
运行
AI代码解释
复制
D:\toolkits.win\anaconda3-5.2.0\envs\dlwin36\lib\site- packages\ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in sqrt

所以当我得到SVD输出后,我试着:

代码语言:javascript
运行
AI代码解释
复制
print(np.min(S)) # prints -1.7798217

这是意外的,因为S只能具有正值。此外,ZCA美白结果不正确,其中包含nan值。

我尝试通过第二次重复运行相同的代码来再现这个结果,这次我没有遇到任何警告或任何负面的S值,但是我得到了:

代码语言:javascript
运行
AI代码解释
复制
print(np.min(S)) # prints nan

知道为什么会发生这种事吗?

更新:重新启动内核以释放cpu和RAM资源,并再次尝试运行此代码。同样,在向np.sqrt()提供负值时也会收到同样的警告。不确定这是否有帮助,但我还附加了cpu和ram利用率数字:

活动监测数字

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-12 22:08:05

这里有几个想法。我没有你的数据集,所以我不能完全确定这些数据会解决你的问题,但我有足够的信心把它作为回答而不是评论。

第一。到3072年,您的X_train是40'000,其中每一行都是数据向量,每一列都是变量或特性。您需要的协方差矩阵是3072乘3072:将rowvar=False传递给np.cov

我不太清楚为什么40000×40000协方差矩阵的SVD会发散。假设您有足够的RAM来存储12 GB的协方差矩阵,那么我可以想到的一件事是数值溢出,因为您可能没有像ZCA (和其他任何白化技术)所期望的那样删除数据的平均值?

所以第二。删除平均值:X_zeromean = X_flat - np.mean(X_flat, 0)

如果您这样做,那么最后一步必须修改一点(以使维度对齐)。下面是使用统一随机数据的快速检查:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
X_flat = np.random.rand(40000, 32*32*3)
X_zeromean = X_flat - np.mean(X_flat, 0)
cov = np.cov(X_zeromean, rowvar=False)
U,S,V = np.linalg.svd(cov)
epsilon = 1e-5
zca_matrix = np.dot(U, np.dot(np.diag(1.0/np.sqrt(S + epsilon)), U.T))
zca = np.dot(zca_matrix, X_zeromean.T) # <-- transpose needed here

作为一个正常检查,np.cov(zca)现在非常接近标识矩阵,如所需(zca将翻转维度作为输入)。

(作为一个侧面,这是一种非常昂贵和数值不稳定的方法来白化数据数组:您不需要计算协方差,然后采取SVD-您正在做两倍的工作。您可以获取数据矩阵本身的瘦SVD (带有np.linalg.svd标志的full_matrices=False ),并从那里直接计算白化矩阵,而无需为协方差矩阵评估昂贵的外部积。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55131665

复制
相关文章
奇异值分解SVD
矩阵分解在机器学习领域有着广泛应用,是降维相关算法的基本组成部分。常见的矩阵分解方式有以下两种
生信修炼手册
2021/04/14
9310
奇异值分解(SVD)
最近两天都在看奇异值分解及其在推荐系统和图像压缩方面的应用,这部分知识比较散也比较难理解,看代码不是很好懂,所以通过编学边整理的方式帮助大脑理解这部分知识。 SVD思维导图 奇异值分解是什么 奇异值
用户1332428
2018/03/08
1.6K0
奇异值分解(SVD)
奇异值分解 SVD
奇异值分解(Singular Value Decomposition,SVD)可以用于降维算法中特征分解,还可以用于推荐系统以及自然语言处理等领域。
yangzelong
2019/03/26
5990
奇异值分解 SVD
奇异值分解(SVD)
奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。
AngelNH
2020/07/15
9420
奇异值分解(SVD)
奇异值分解(SVD)原理
的图片,如果以像素值作为特征,那么每张图片的特征维度是10000。当进行PCA降维时,难点在于我们构造协方差矩阵时,维度达到
Coggle数据科学
2019/09/12
2.1K0
奇异值分解(SVD)原理
奇异值分解 SVD 的数学解释
本文介绍了奇异值分解(SVD)在机器学习和深度学习领域中的应用,包括图像压缩、去噪、降维等方面。SVD是一种矩阵分解方法,能够将矩阵分解为三个矩阵的乘积,从而可以用于计算图像压缩、去噪、降维等任务中的奇异值。同时,SVD也可以用于深度学习中的特征值分解,从而帮助机器学习算法更好地理解数据。
Alan Lee
2018/01/02
1.5K0
奇异值分解 SVD 的数学解释
矩阵特征值分解(EDV)与奇异值分解(SVD)在机器学习中的应用
参考资料 百度百科词条:特征分解,矩阵特征值,奇异值分解,PCA技术 https://zhuanlan.zhihu.com/p/29846048 https://towardsdatascience.com/all-you-need-to-know-about-pca-technique-in-machine-learning-443b0c2be9a1
全栈程序员站长
2022/07/22
1.3K0
矩阵特征值分解(EDV)与奇异值分解(SVD)在机器学习中的应用
机器学习数学基础:从奇异值分解 SVD 看 PCA 的主成分
今天我们来看一个在数据分析和机器学习领域中常用的降维方法,即主成分分析(PCA)。它是探索性数据分析(EDA)和机器学习算法对数据的基本处理方法。
统计学家
2020/12/08
6380
机器学习数学基础:从奇异值分解 SVD 看 PCA 的主成分
机器学习笔记之矩阵分解 SVD奇异值分解
奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分解,在生物信息学、信号处理、金融学、统计学等领域有重要应用,SVD都是提取信息的强度工具。
Jetpropelledsnake21
2021/03/04
1.4K0
机器学习笔记之矩阵分解 SVD奇异值分解
机器学习基础:奇异值分解(SVD)
奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,也是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。
统计学家
2022/05/26
6550
机器学习基础:奇异值分解(SVD)
奇异值分解(Singular Value Decomposition,SVD)
Am×n=UΣVTUUT=ImVVT=InΣ=diag(σ1,σ2,...,σp)σ1≥σ2≥...≥σp≥0p=min⁡(m,n)A_{m \times n} = U \Sigma V^T\\ UU^T=I_m\\ VV^T=I_n\\ \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p) \\ \sigma_1\ge \sigma_2 \ge...\ge\sigma_p \ge0\\ p=\min(m,n)Am×n​=UΣVTUUT=Im​VVT=In​Σ=diag(σ1​,σ2​,...,σp​)σ1​≥σ2​≥...≥σp​≥0p=min(m,n)
Michael阿明
2020/07/13
1.4K0
降维算法: 奇异值分解SVD
总所周知,在低维下,数据更容易处理,但是在通常情况下我们的数据并不是如此,往往会有很多的特征,进而就会出现很多问题:
数据科学工厂
2023/03/21
7620
降维算法: 奇异值分解SVD
奇异值分解(SVD)原理与在降维中的应用
地址:https://www.cnblogs.com/pinard/p/6251584.html
机器学习算法工程师
2018/07/26
2.1K0
奇异值分解(SVD)原理与在降维中的应用
奇异值分解(SVD)原理与在降维中的应用
    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。
刘建平Pinard
2018/08/14
6900
奇异值分解(SVD)原理与在降维中的应用
基于奇异值分解(SVD)的图片压缩实践
数字图片在计算机中是以矩阵形式存储的。所以可以通过矩阵理论和矩阵算法对数字图像进行分析和处理。本文通过对图片进行SVD压缩,对不同的参数下的压缩效果进行对比。
Michael阿明
2020/07/13
2.4K0
python3-特征值,特征分解,SVD
1.设A为n阶矩阵,若存在常数λ及n维非零向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量。 A的所有特征值的全体,叫做A的谱,记为λ(A) 2.特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。 一个矩阵的一组特征向量是一组正交向量。
py3study
2020/01/06
1.6K0
强大的矩阵奇异值分解(SVD)及其应用
PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。 特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中。而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景。奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个
机器学习AI算法工程
2018/03/13
1.6K0
强大的矩阵奇异值分解(SVD)及其应用
SVD奇异值分解 中特征值与奇异值的数学理解与意义
更像是矩阵分解多一点,没有涉及到SVD的数学意义,这篇博客大概会写一些数学SVD的数学理解,以及SVD在PCA和推荐算法上面的应用。
大鹅
2021/06/16
2.3K0
简单易学的机器学习算法——SVD奇异值分解
    特征值分解与SVD奇异值分解的目的都是提取一个矩阵最重要的特征。然而,特征值分解只适用于方阵,而SVD奇异值分解适用于任意的矩阵,不一定是方阵。
felixzhao
2019/02/13
9300
【数学基础】特征值,特征向量与SVD奇异值分解
本文是深度学习笔记系列文章,本次文章将介绍线性代数里比较重要的概念:特征值,特征向量以及SVD奇异值分解。
zenRRan
2020/02/18
1.9K0

相似问题

使用Numpy (np.linalg.svd)进行奇异值分解

45

C中奇异值分解(SVD)

18

LAPACK SVD (奇异值分解)

10

使用LAPACK svd的负奇异值

12

PHP中的奇异值分解(SVD)

61
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档