1. 程式人生 > >003-keras模型的保存於加載

003-keras模型的保存於加載

mode image sta 上傳 信息 結構 blog dot 繼續

方式一: 保存所有狀態

保存模型和模型圖

# 保存模型 model.save(file_path)
model_name = ‘{}/{}_{}_{}_v2.h5‘.format(params[‘model_dir‘],params[‘filters‘],params[‘pool_size_1‘],params[‘pool_size_2‘])
model.save(model_name)

# 保存模型圖
from keras.utils import plot_model
# 需要安裝pip install pydot
model_plot = ‘{}/{}_{}_{}_v2.png‘.format(params[‘model_dir‘],params[‘filters‘],params[‘pool_size_1‘],params[‘pool_size_2‘])
plot_model(model, to_file=model_plot)

 

  • 模型圖如圖所示

技術分享圖片

加載模型

from keras.models import load_model

model_path = ‘../docs/keras/100_2_3_v2.h5‘
model = load_model(model_path)

  

優勢和弊端
優勢一在於模型保存和加載就一行代碼,寫起來很方便。
優勢二在於不僅保存了模型的結構和參數,也保存了訓練配置等信息。以便於從上次訓練中斷的地方繼續訓練優化。
劣勢就是占空間太大,我的模型用這種方式占了一個G。【紅色部分就是上述模型采用第一種方式保存的文件】本地使用還好,如果是多人的模塊需要集成,上傳或者同步將會很耗時。

技術分享圖片

方式二: 只保存模型結構和模型參數

保存模型

保存模型圖部分和方式一相同。

import yaml
import json

# 保存模型結構到yaml文件或者json文件
yaml_string = model.to_yaml()
open(‘../docs/keras/model_architecture.yaml‘, ‘w‘).write(yaml_string)
# json_string = model.to_json()
# open(‘../docs/keras/model_architecture.json‘, ‘w‘).write(json_string)

# 保存模型參數到h5文件
model.save_weights(‘../docs/keras/model_weights.h5‘)

  

加載模型

import yaml
import json
from keras.models import model_from_json
from keras.models import model_from_yaml

# 加載模型結構
model = model_from_yaml(open(‘../docs/keras/model_architecture.yaml‘).read())
# model = model_from_json(open(‘../docs/keras/model_architecture.json‘).read())

# 加載模型參數
model.load_weights(‘../docs/keras/model_weights.h5‘)

  

優勢和弊端

  • 優勢就是節省了硬盤空間,方便同步和協作
  • 劣勢是丟失了訓練的一些配置信息

技術分享圖片

003-keras模型的保存於加載