当我没有将模型保存在内存中时,如何使用 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) 中时,为啥我会得到这些符号