声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2880|回复: 2

[图像处理] 【Matlab】KPCA的核矩阵的大小问题,附代码

[复制链接]
发表于 2009-11-9 07:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
假设现有7000个样本,每个样本256维,那么输入矩阵是7000*256的,
对其做核变换的话,应该是得到7000*7000的核矩阵吧,这计算量大到令人无语,我电脑内存不足了。。。。
附代码:for i=1:7000
                  for j=i:70000
                      kernel_matrix(i,j)=exp(-norm(X(:,i)-X(:,j))^2/dev);
                 end
              end
              unit=ones(7000,7000)/7000;
              final_kernel=kernel_matrix - unit * kernel_matrix - kernel_matrix * unit + unit * kernel_matrix * unit;
请问大家,做这个高斯核分析的时候,是得到7000*7000的矩阵吧,这个运算到内存不足的问题怎么解决呢?可不可以不用全部样本,只取一小部分。。。

另外,对final_kernel是用eigs找最大特征值呢 还是用svd做非奇异分解比较好呢? 因为我做PCA一般都是eigs, 不知道用这两个有什么具体的区别?
回复
分享到:

使用道具 举报

发表于 2010-2-6 19:01 | 显示全部楼层
没办法,做主成分分析最计算机硬件要求较高!
解决的办法是将操作系统换为64位的,将内存加到4G,将虚拟内存设大点!

评分

1

查看全部评分

发表于 2010-2-12 14:04 | 显示全部楼层
LZ前后矩阵大小交代有点乱, 到底多大? 7000*256? 7000*7000? 7000*70000?
我的笔电系统为32位元内存已加到4G, 刚试下aa=rand(7000,70000); aa=rand(7000,7000); 前者出现Maximum variable size allowed by the program is exceeded.后者不会
还有LZ的两层loop内的矩阵kernel_matrix是否新定义, 若是, 效率不好! 最好在loop前先使用zeros定义矩阵大小
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 01:45 , Processed in 0.063098 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表