我训练了一个关于19 on的训练数据的Sklearn模型。我想将它保存到磁盘中,以便以后使用它进行推断。由于在另一个堆栈溢出问题中再次出现,我尝试了以下方法:
Pickle.dump(模型,打开(文件名,'wb'))
成功地保存了模型。磁盘上的大小是1.9 GB。
loaded_model =pickle.load(打开(文件名,'rb'))
模型的加载导致了MemorError (尽管有16 GB内存)
joblib.dump(est,'random_forest.joblib‘compress=3)
它还以加载文件时的MemoryError结束。
D=klepto.archives.dir_archive(‘sklearn_model’,cached=True,serialized=True) d'sklearn_random_forest‘= est d.dump()
创建了KeyError,但是当我想使用以下代码加载它时,我得到了sklearn_random_forest:
D=klepto.archives.dir_archive(‘sklearn_model’,cached=True,serialized=True) d.load(model_params) est = dmodel_params
我试着用相同的代码保存字典对象,结果成功了,所以代码是正确的。显然,Klepto不能坚持滑雪板模型。我使用缓存和序列化的参数,但没有帮助。
任何有关如何处理此问题的提示都将不胜感激。是否有可能以JSON、XML、HDFS或其他格式保存模型?
发布于 2021-01-21 19:56:48
尝试使用joblib.dump()
在这种方法中,您可以使用param "compress“。这个参数取0到9之间的整数值,这个值越高,你的文件得到的压缩就越多。理想情况下,压缩值为3就足够了。
唯一的缺点是压缩值越高,写入/读取速度就越慢!
发布于 2021-02-26 23:02:51
随机林模型的大小并不严格取决于您训练它的数据集的大小。相反,您可以在随机森林分类器文档上看到其他参数,这些参数控制着模型的大小。参数如下:
n_estimators -树的数量max_depth --每棵树有多高?min_samples_split和min_samples_leaf -允许树中的节点拆分/继续拆分的样本数如果您已经使用了大量的估计器、很大的最大深度和非常低的叶/分割样本来训练您的模型,那么您的结果模型可能是巨大的--这就是您遇到内存问题的地方。
在这些情况下,我经常发现训练较小的模型(通过控制这些参数) --只要它不破坏性能度量--将解决这个问题,然后您可以回到joblib或其他您提到的保存/加载模型的解决方案上。
https://stackoverflow.com/questions/65834680
复制相似问题