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