keras 学習済モデルの取り扱い全般まとめ

keras公式の学習済モデル読み込み方法

from keras.applications.inception_v3 import InceptionV3

InceptionV3 = InceptionV3(include_top=False, weights='imagenet', input_tensor=input_tensor)

kerasで利用可能なモデル

ImageNetで学習した重みをもつ画像分類のモデル:

  • Xception
  • VGG16
  • VGG19
  • ResNet50
  • InceptionV3
  • InceptionResNetV2
  • MobileNet
  • NASNet

参照 https://keras.io/ja/applications/

学習済モデルを利用した学習方法

  • 重み読み込み版(finetuning) weights='imagenet'を指定
from keras.applications.inception_v3 import InceptionV3

InceptionV3 = InceptionV3(include_top=False, weights='imagenet', input_tensor=input_tensor)
  • 重み読み込みなし版 weights='None'を指定
from keras.applications.inception_v3 import InceptionV3

InceptionV3 = InceptionV3(include_top=False, weights='None', input_tensor=input_tensor)
  • オリジナルの学習済モデルの場合(finetuning)
model.load_weights("./weight.19-0.70.hdf5", by_name=True)

model.load_weights(filepath, by_name=False): (save_weightsによって作られた) モデルの重みをHDF5形式のファイルから読み込む

デフォルトはモデルの構造は不変であることが前提

(いくつかのレイヤーが共通した)異なる構造に対して重みを読み込む場合,by_name=Trueを使うことで,同名のレイヤーにのみ読み込み可能

学習モデルの保存方法

model.save_weights(os.path.join('PATH', 'InceptionV3_scratch2.h5'))

ModelCheckpointを使った各エポック終了後にモデルの保存のしかた

keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)

引数

  • filepath: モデルファイルを保存するパス.
  • monitor: 監視する値.
  • verbose: 冗長モード, 0 または 1.
  • save_best_only: save_best_only=Trueの場合,監視しているデータによって最新の最良モデルが上書きされない.
  • mode: {auto, min, max}の内の一つが選択されます.save_best_only=Trueならば,現在保存されているファイルを上書きするかは,監視されている値の最大化か最小化によって決定.

val_accの場合,この引数はmax

val_lossの場合はmin

autoモードでは,この傾向は自動的に監視されている値から推定します. * save_weights_only: Trueなら,モデルの重みが保存されます (model.save_weights(filepath)),そうでないなら,モデルの全体が保存されます (model.save(filepath)). * period: チェックポイント間の間隔(エポック数).

参考にしたもの

https://employment.en-japan.com/engineerhub/entry/2017/04/28/110000