【问题标题】:Problem with big_cprodMat output: Matrix too largebig_cprodMat 输出问题:矩阵太大
【发布时间】:2019-07-24 14:58:41
【问题描述】:

我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸 177304*177304。

由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出求解乘积,而 R 崩溃了。

我能做些什么来避免这种情况吗?

我是该网站的新手,非常感谢任何人提供的任何帮助。

【问题讨论】:

  • 愿意提供一个带有模拟数据的工作示例吗?

标签: r bigstatsr


【解决方案1】:

用一个更小的例子:

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 存储库上打开一个问题。

【讨论】:

  • 谢谢!该代码有效,但我已经打开了一个问题,无论添加未来改进的可能性。
  • 好的。如果这对您有用,请验证答案。
猜你喜欢
  • 2021-07-05
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
相关资源
最近更新 更多