Keras 事はじめ
Kerasを使ってCSVから読み込んだデータを元にしてmodelの学習及びserver化を実行してみる。
train.py
データはcsvから読み込んでみました。tensorflowの場合はload_csv_with_heade
というメソッドからcsvを読み込んでいましたが、kerasには専用のmehodが用意されていないようなので、numpyのgenfromtxt
の機能を使って読み込んでみる。load_csv_with_heade
と同じように、最終行を正解値として設定。dtype=int
としているのだけど、float型が混じっていた場合どうでるべきなのだろうか、ひとまず今回はint型のみで完結するデータを作成してみました。
X = genfromtxt('./some.csv', delimiter=',', skip_header=1, usecols=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), dtype=int)
Y = genfromtxt('./some.csv', delimiter=',', skip_header=1, usecols=(15), dtype=int)
input_dim
をデータ形式に従って15に設定、output_dim
は30に、ここはチューニグが必要そう、今回のデータ量ではoutputの値によって精度が変わっている様子は見受けられなかったので、全体的な把握がまだできていないかもしれない。
model.add(Dense(input_dim=15, output_dim=30))
学習したmodelを使って、predictを実行、5000回のepochでそこそこ精度はでるようになりました。
results = model.predict_proba(np.array( [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], ] ))
学習データを保存する為にsave_weights
でデータを保存、HDF5形式のファイルで保存される。ただ、詳細はわかっていないのだけど、互換性のあるデータなのだろうか。
model.save_weights('./learnedModel')
server.py
まず、作成済みのモデル定義を読み込み。
Sequential.from_config()
次に、学習済みの重みを読み込み。
model.load_weights
以上の手順で無事server化に成功。 学習データを再現したAPIサーバーも手軽に立てる事ができそうです。