0

私は、機械学習プロジェクトでトレーニングとテストのプロセスを分離することを目的としたプロジェクトに取り組んでいます。使用するモデルをラップするようにコードを設計しました。モデルとは、クラス Model 内のたとえば分類子を意味します。

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

dillとはどちらcloudpickleも非常に堅牢なシリアライザであり、標準の Python でほぼすべてのオブジェクトをシリアライズできます。(私はdill著者です、ところで。)

dillhttps://github.com/uqfoundation/dill/でスタンドアロン パッケージとして入手できます 。

whilecloudpickleはほとんど死んでいます (それは によってサポートされてpicloudいましたが、商用化されました…そしてpyspark、独自のコードベース内でそれをサポートする他のいくつかのパッケージが残りました): https://github.com/apache/spark/blob/master/python/ pyspark/cloudpickle.py

私はdill、統計計算と最適化における並列および分散コンピューティングのバックボーンとして使用し、並列機械学習技術を可能にするために使用しました。dockerただし、オブジェクトは試していません。

于 2015-04-07T19:57:53.760 に答える