当我没有将模型保存在内存中时,如何使用 gcforest 模型进行预测?

Posted

技术标签:

【中文标题】当我没有将模型保存在内存中时,如何使用 gcforest 模型进行预测?【英文标题】:How to predict using a gcforest model when I did not keep the model in memory? 【发布时间】:2019-07-27 23:39:54 【问题描述】:

我正在尝试训练一个多粒度级联森林(最初来自 this paper,在 this repo 中实现),并且只预测一个样本。

由于我在将模型保存在内存中时遇到 MemoryError,因此我按照演示代码中所写的内容命名为 gc.set_keep_model_in_mem(False)。写在docs是

set_keep_model_in_mem(False)。如果您的 RAM 不足,请将其设置为 false。 (默认为真)。如果您将此设置为 False,则必须使用 fit_transform(X_train,y_train, X_test=X_test, y_test=y_test) 来评估您的模型。

但是,如果我使用它,我不能再调用gc.predict([X_test[0]]) 并给出错误:

ValueError: model (li=0, ei=0) not present, 也许你应该将 keep_model_in_mem 设置为 True

谁能帮我解决这个问题?非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

最好尝试在具有巨大 RAM 的 PC 中运行预测。运行时,gcForest 会消耗大量内存。否则,减少模型中树或节点的大小,这可能会导致更糟糕的结果。

【讨论】:

感谢您的回答。这是否意味着如果模型没有保存在内存中,就无法仅预测一个样本? 您在 PC 上训练此模型,并将其保存到磁盘。加载模型时,出现这个错误,是这样吗?否则,什么时候会发生错误以及如何获得此模型? 当我尝试预测某事时会发生错误。由于我将 keep_model_in_mem 设置为 False,因此训练后模型似乎不再存在于内存中。我不确定我对代码的理解是否正确。 释放内存,然后运行代码。如果错误再次发生,则模型对于内存来说太大了。那么最好在这个 repo 上发布你的问题。也许作者会给你一个解决方案。 记得提供你的电脑和操作系统的细节,比如内存的大小。以及特征的暗淡和训练数据的 N。

以上是关于当我没有将模型保存在内存中时,如何使用 gcforest 模型进行预测?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Eloquent 的 Laravel 不会在数据库中保存模型属性

当图像保存在核心数据的集合视图中时,应用程序因内存错误而崩溃

当我尝试将数据保存在 txt (java) 中时,为啥我会得到这些符号

如何将旋转图像保存在 iPhone 相册中?

当我将数据保存在文本文件中时,末尾有一条多余的行,它是啥(C#)?

将 UIImage 转换为 Keras 模型的 MLMultiArray