24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2735  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sapphirechina

铜虫 (正式写手)

[求助] 如何存储和计算超大规模稀疏矩阵已有1人参与

本人在R语言环境中生成了一个18万行*18万列的单位矩阵,然后用循环给这个单位矩阵赋值,结果循环到8万多次就报错无法分配内存了。
代码如下:
#生成单位矩阵,用普通矩阵无法创建,所以用sparseMatrix来创建。
num_samples=180000
rownumber=c(1:num_samples)   
colnumber=c(1:num_samples)
value=c(rep(1,each=num_samples))
M=sparseMatrix(rownumber,colnumber,x=value)  

#给单位矩阵赋值,全部赋值完成后是一个4*50*180000个数值的对称稀疏矩阵。
for(i in 1:num_samples){     
    w=W[,i]                              #有50个浮点型数值。
    n=neighbors[,i]                 #有50个整型数值。
    M[i,n]=M[i,n]-t(w)
    M[n,i]=M[n,i]-w
    M[n,n]=M[n,n]+w%*%t(w)
}

请教上述的情况该怎么处理呢?我的机器内存是4G,32位操作系统。
如果这个矩阵能顺利赋值完毕,我随后还需要计算这个矩阵的特征值和特征向量。
请教可能实现么?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhijian_duan

铁杆木虫 (正式写手)

系数矩阵可以采用拉直的方式进行处理,只是调用程序繁琐而已
功夫不负有心人
7楼2016-11-30 14:44:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

100403140212

木虫 (正式写手)

超级水晶虫

把矩阵及运算结果直接写入文件,不要挂载在内存,循环后及时释放内存

发自小木虫Android客户端
奔跑吧,骚年
2楼2016-11-26 22:23:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sapphirechina

铜虫 (正式写手)

引用回帖:
2楼: Originally posted by 100403140212 at 2016-11-26 22:23:15
把矩阵及运算结果直接写入文件,不要挂载在内存,循环后及时释放内存

多谢指点! 不知道有无方便的稀疏矩阵存储工具可以使用的?
另外,赋值全部完毕后,还需要对该矩阵求特征值和特征向量。
这时候是否还需要恢复为原来的矩阵?如果这样的话,那又没戏了。
3楼2016-11-27 08:51:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alober

木虫 (著名写手)

不懂这种程序语言,用python里的scipy.sparse.linalg.eigs到是能求稀疏矩阵前几个特征值。scipy.io用来读写矩阵到文件。不过这个语言我也不很懂,可以查一查相关的资料。
4楼2016-11-27 10:36:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见