ほぼ日刊サービス開発日誌

React, firebase, 機械学習など

sponsored

kerasでモデルと重みを保存して再利用する方法

https://www.infiniteloop.co.jp/blog/wp-content/uploads/2017/11/keras-logo-2018-large-1200.png

kerasは

  • モデルの構造
  • モデルの重み

を別々に保存する構造になっています。

モデルの構造はjson、もしくはyamlで保存されます。

モデルの重みは HDF5フォーマットで保存されます。これは多次元の配列を保存するのに適した形式です。

# モデルの構造を保存する
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)

# モデルの重みを保存する
model.save_weights("model.h5")

それでは保存したものを利用するにはどうしたらいいのでしょうか。 それぞれ以下のAPIが用意されています。

  • モデル構造:model_from_json(json_file.read())
  • 重み: load_weights("filename")
from keras.models import Sequential
from keras.layers import Dense
from keras.models import model_from_json
import numpy
import os

# モデルの構造を読む
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)

# 重みを適用する
loaded_model.load_weights("model.h5")

参考

machinelearningmastery.com