r - big_cprodMat 输出问题:矩阵太大
问题描述
我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸177304* 177304。
由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出来解决产品,而 R 却崩溃了。
我能做些什么来避免这种情况吗?
我是该网站的新手,非常感谢任何人可以提供的任何帮助。
解决方案
使用一个较小的示例:
N <- 17e3
M <- 23
A <- matrix(rnorm(N * M), N, M)
B <- matrix(rnorm(N * M), M, N)
您可以按块填充生成的矩阵(请注意,对于您要求的大小,磁盘将占用 234 GB):
library(bigstatsr)
AB <- FBM(N, N, backingfile = "test")$save()
big_apply(AB, a.FUN = function(X, ind) {
X[, ind] <- A %*% B[, ind]
NULL
}, block.size = 1e3)
不要犹豫,在 {bigstatsr} 的 GitHub 存储库上打开一个问题。
推荐阅读
- angular - 垫子选择内垫子选项的宽度不正确
- python - 减少 Anagram 词搜索的计算时间
- python - Azure ImportError 上的 Python 外部未找到模块
- lisp - 列表的 CLISP 表示
- python - Python:关闭用 scipy.misc.imread 打开的文件
- notepad++ - 如何删除某个字符后的所有内容?(记事本++)
- javascript - 如何从嵌套的 Promise 中接收数据
- php - 如何使用 Jquery Ajax 传递变量和 FormData?
- c# - 使反序列化的类更健壮
- mysql - sql触发器从另一个字段设置字段值