私は、機械学習プロジェクトでトレーニングとテストのプロセスを分離することを目的としたプロジェクトに取り組んでいます。使用するモデルをラップするようにコードを設計しました。モデルとは、クラス 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 モデルを保存/シリアル化する必要が生じます。
pickleとjsonpickleを使用してみましたが、どちらも特定の種類のオブジェクトをシリアル化する際に制限がありました。オブジェクトの保存と取得に十分な一般的な代替手段を見つけることができませんでした。代替手段はありますか?