Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的RAM中保存列表_R - Fatal编程技术网

在R中的RAM中保存列表

在R中的RAM中保存列表,r,R,我正在运行一个分类算法 我有47个模型 我针对每个模型测试我的输入 这些型号总共占用2.7GB的磁盘空间 我使用r.cache包将模型存储在磁盘上 我从磁盘上一个接一个地检索模型并运行预测 所以我认为将模型加载到RAM中是有意义的。这将节省io时间并加快进程 我调整了函数(见下面的代码),将模型加载到列表中,并将模型保存在全局环境中(假设全局环境在RAM中) 但是,功能速度没有变化,RAM内存使用似乎也没有变化 问题: 我现在假设全局环境变量被缓存到磁盘上,对吗 是否可以在RAM中保存大内存

我正在运行一个分类算法

  • 我有47个模型
  • 我针对每个模型测试我的输入
  • 这些型号总共占用2.7GB的磁盘空间
  • 我使用
    r.cache
    包将模型存储在磁盘上
  • 我从磁盘上一个接一个地检索模型并运行预测
所以我认为将模型加载到RAM中是有意义的。这将节省io时间并加快进程

我调整了函数(见下面的代码),将模型加载到列表中,并将模型保存在全局环境中(假设全局环境在RAM中)

但是,功能速度没有变化,RAM内存使用似乎也没有变化

问题:

我现在假设全局环境变量被缓存到磁盘上,对吗

是否可以在RAM中保存大内存占用模型列表(每个模型的范围从50mb到400mb)

当前代码如下:

注意:loadCache是r.cache包中的一个方法。它从磁盘缓存加载模型。 显然,这是测试代码。如果它真的有效,我会把它分解成更小的函数

  if(is.null(modelsList))
  {
    modelsList=list()

    for(majorFinal in majorAsFactor)
    {
      print(paste("\n\n\n\npredicting.....",majorFinal))
      key=list(paste("KSVM",majorFinal,sep='_'))
      svm_model <- loadCache(key)
      modelsList[[count]] <- svm_model

      count <- count+1
      svm_pred <- predict(svm_model, onerowdfcache)

        if(as.character(svm_pred)!="OTHER")
        {

          results<-c(results,as.character(svm_pred))
          print(results)
        }
    }
  }
  else
  {
    count=as.numeric(1)
      for(svm_model in modelsList)
      {
        print(paste("\n\n\n\npredicting.....",count))
        count=count+1
        svm_pred <- predict(svm_model, onerowdfcache)

        if(as.character(svm_pred)!="OTHER")
        {


          results<-c(results,as.character(svm_pred))
          print(results)

        }

    }
  }
if(is.null(modelsList))
{
modelsList=list()
对于(MajorFactor中的majorFinal)
{
打印(粘贴(“\n\n\n\n命令…”,主要最终版本))
键=列表(粘贴(“KSVM”,主最终,sep=”))

svm_model您可以将尽可能多的数据加载到R中,就像您的机器有RAM一样。通常,如果您想用这些数据做任何事情,您的对象应该只占用机器RAM的1/3。您的代码可能比较慢的一个原因是,您正在通过向它们添加项来增加
结果
模型列表
。但不是在第二秒钟假设。那么,第一个条件可能会更慢,不是吗?嗯,无论是
if
还是
else
,你的
结果都在增长。但是实际的速度成本是不可能精确地说出来的。我不知道你的数据有多大,你在做多少次迭代。如果它都很小,那么速度成本就会很低ld最小。结果很小(通常是两个10个字符的字符串)。在第一种情况下,通过r.cache从磁盘加载的模型很大,总计2.7GB。我认为第二种情况已经消除了这一点,但性能没有差异。请将脚本分解为组件,并测量
system.time()每个部分所需的时间
功能。我猜从缓存加载模型不会花费任何时间。如果您经常使用磁盘中的文件,大多数操作系统会将其保存在内存缓冲区中以更快地加载。RAM速度约为10000 MB/s。您可以将与您的机器具有RAM的数据一样多的数据加载到R中。通常,如果您想对该数据执行任何操作,您的对象应该d可能只占用机器RAM的1/3。代码可能会变慢的原因之一是,通过向
结果
模型列表
添加项目,它们都在增长。但在第二种情况下不会。因此,人们会认为第一种情况会变慢,不是吗?嗯,在
两种情况下,您都在增长
结果
else
。但是实际的速度成本不可能精确地说出来。我不知道您的数据有多大,您正在进行多少次迭代。如果数据都非常小,速度成本将是最小的。结果很小(通常是两个10字符的字符串)。在第一种情况下,通过r.cache从磁盘加载的模型非常庞大,总计2.7GB。我认为第二种情况已经解决了这一问题,但性能没有差异。请将脚本分解为组件,并测量每个部分在
system.time()中所用的时间
功能。我猜从缓存加载模型不会花费任何时间。如果您经常使用磁盘中的文件,大多数操作系统会将其保存在内存缓冲区中以更快地加载。RAM速度约为10000 MB/s。