2017年1月7日土曜日

chainerの学習データ、保存と読込

このところ人気なDeep learningです。よくサンプルプログラムがネットに出ていて、試してみては動いて喜んでいますが、基本的にサンプルプログラムは以下の構造をしています。

①modelクラスの定義
②学習データ、試験データの準備
③modelで学習(ここが1時間単位で時間のかかるもの多数)
④学習した結果で、試験データを試し学習結果の確認

それでまあ、④の学習結果が80%以上の正答率が出力され「素晴らしい」で終わってしまいます。でも、実用にしようと思うと通常のサンプルプログラムでは③の学習が外せません。(たまに、学習結果のデータも公開されていて、それよ読み込んで④の結果を出すサンプルもありますが、今度は学習部分の実態がわかりません)

ということで、実用的には③の部分が以下の2つの機能に分かれてほしいのです。

③A 学習した結果(model)をファイルに保存
③B 保存されたデータを読込、試験データで学習結果の確認

以外と、ここをピンポイントで説明したものがなかったので、ここでまとめみました。

⒈pickleを使う
pythonの汎用的なオブジェクトの保存・読込ライブラリです。詳しい説明は省きますが、単純に学習modelオブジェクトをpickleで保存・読込をする方法です。普通に、openしてread/writeします。

⒉chainerの保存機能を使う
これがあるはずなんですが、これまでぐぐっても出てきませんでした。方法は以下の通りです。(ファイル名は、"iris-learn.data"で保存しています。modelはpythonプログラムにおける実際のクラス名です。)

③A
# save                                                                                                                

serializers.save_npz("iris-learn.data", model)

③B
# load                                                                                                                 

serializers.load_npz("iris-learn.data", model)

普通にserializersモジュールを使えばよかっただけでした。(ただ、その詳細例が全然見つかりませんでした)

0 件のコメント:

コメントを投稿