しんさんのブログ

科学や技術のこと読書のことなど

Tensorflow, Kerasでよく使うセーブデータ形式

HDF5

多分一番よくつかわれるデータ形式だと思います。
非営利のHDF5グループが管理しているデータ形式
階層バイナリ形式で非常に大規模なデータの保存にも対応できる。 ディープラーニングではモデルそのものやモデルの重みを保存するのに使用されています。
モデルのみを保存できますし、モデルと重みの両方を一度にセーブすることもできる。

#モデルのみセーブする
model.save("hoge-model.hdf5")
#モデルと重みの両方をセーブ
model.save("hoge-modelWeights.hdf5")
#モデルをロードする
myModel = keras.models.load_model("hoge-model.hdf5")
#重みをロード
myWeight= keras.model.load_weights("hoge-modelWeights.hdf5")

JSON

JSONはどちらかと言うとWEB界隈でよく使われているデータ形式で別にTF,Kerasだからというわけではないですが、binary形式の
HDF5形式に対しで後でテキストとして読みやすいのでたまに使うことがあります。 ただし、保存できるのはネットワークモデルのみです。

# モデルの保存
model_json = model.to_json()
with open("hoge/hoge-model.json","w") as js:
     js.write(model_json)
# モデルの読み込み
js = open("hoge/hoeg-model.json", "r")
model_json = js.read()

Pickle

PickleはPythonのリストなどをセーブするのにつかわれます。
TF, kerasでは学習の履歴をセーブするのによく使われます。

# historyのセーブ
history = model.fit( )
with open('hoge.pkl', 'wb') as hf:
     pickle.dump(history.history, hf)
# historyのロード
hf = open('hoge.pkl', 'rb')
history = pickle.load(hf)