0

我正在做一个项目,目的是在机器学习项目中分离训练和测试过程。我设计了代码来包装使用的模型,模型是指模型类中的分类器。

class Model: def init(self, newModel): self.model = newModel

然后我使用列表传递模型必须提供的函数对象:

def addFunctions(self,functions): for function in functions: self.functions[function.__name_ _] = function

现在该模型可以用于分类,例如通过使用分类器对象构造它并将其函数在列表中传递给 addFunctions 以便我可以调用它们。然后我将模型和代码打包到一个docker容器中。为了简化它的工作,它是一个轻量级的虚拟机。

分离的目的是在优化后将训练好的模型传递给 docker 容器,而不需要传递整个代码。因此,需要保存/序列化 Python 模型。

我尝试使用picklejsonpickle,但是在序列化某些类型的对象时它们都有限制。我找不到任何对对象存储和检索足够通用的替代方法。有没有其他选择?

4

1 回答 1

2

两者dillcloudpickle都是非常健壮的序列化器,可以序列化标准 python 中的几乎任何对象。(顺便说一句,我是dill作者。)

dill可作为独立包在: https ://github.com/uqfoundation/dill/

虽然cloudpickle几乎已经死了(它得到了支持picloud,但他们已经商业化了......并且pyspark在他们自己的代码库中留下了一些支持它的其他包): https ://github.com/apache/spark/blob/master/python/ pyspark/cloudpickle.py

dill在统计计算和优化中用作并行和分布式计算的支柱,并使用它来启用并行机器学习技术。但是,我还没有尝试过docker对象。

于 2015-04-07T19:57:53.760 回答