【问题标题】:Save several large Matrix from Rcpp to R environment将几个大矩阵从 Rcpp 保存到 R 环境
【发布时间】:2018-01-27 20:45:48
【问题描述】:

我使用 Rcpp(尤其是 Rcpp Armadillo)执行一个方法,该方法返回几个大矩阵作为结果,例如大小为 10000*10000。如何保存这些矩阵以在 R 环境中使用它们。假设我在 Rcpp 中的代码如下所示:

  list Output (20000);
  for( int i(0);i<20000;++1 ){
    ...
    ...
    // Suppose that the previous lines allow me to compute a matrix Gi  of size 10000*10000
    Output(i)=Gi;
  }
  return Output;

我编程的方式成本很高,需要足够的内存。但我需要 20000 矩阵来计算 R 环境中的估计器。如何保存矩阵?不知道bigmatrix包能不能帮到我。

最好的,

【问题讨论】:

  • i) 我们拼写为 Rcpp。 ii) 10000 * 10000 * 8 字节 = 800 mb。规模大但并非不可逾越。你试过什么?
  • 您好,Dirk,感谢您的回复。事实上,我想使用矩阵来构建一个将在数值上最大化的函数。所以我试图将计算 Gi 矩阵的代码放在我想要最大化的函数中。但随之而来的是,对于最大搜索的每次迭代,将计算 20000 Gi。这种方式使用最少的内存,但计算永远不会找到最大值。太长了。
  • 所以,如果我理解正确的话,在每次迭代中,你计算一个 10000 * 10000 矩阵并且有 20000 次迭代,以便计算一个 20000 * 10000 * 10000 个元素的数组?如果是这种情况,则意味着您要存储 15 TB 的数据,因此您需要更改算法。你不能只使用每个 Gi 的摘要吗?
  • 嗨@F.Prive 谢谢你的回复。我在数学论坛上发布了这个问题。你可以得到它here非常感谢你
  • 似乎总和的每个元素都独立于其他元素,因此您不必一次计算所有 Gi,而一次只计算一个。我说的对吗?

标签: matrix rcpp armadillo r-bigmemory


【解决方案1】:

我终于找到了解决办法。我注意到我需要 15TB 来保存矩阵。那是不可能的。我最后做的是只保存矩阵的一些特征,例如特征值和其他特征。查看更多详情here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2016-11-11
    • 2016-08-02
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多