ModelCheckpointの詳細


問題の説明


kerasを使用してモデルを構築し、トレーニング時にval_を検証します.accは1に達したが,試験データセットの上でモデルはまだ完全に収束していない.ModelCheckpointのパラメータ設定時に最適なモデルのみを保持するよう設定されているため、最新のより良いモデルを保存できません.

ModelCheckpoint

  • 関数プロトタイプ
    keras.callbacks.ModelCheckpoint(filepath, 
    								monitor='val_loss', 
    								verbose=0, 
    								save_best_only=False, 
    								save_weights_only=False, 
    								mode='auto', 
    								period=1)
    
  • コールバック関数を使用すると、各epoch後にfilepath
  • にモデルが保存されます.
  • パラメータfilename:文字列、モデルのパスを保存し、filepathはフォーマットされた文字列であり、中のプレースホルダはepoch値と入力on_epoch_endのlogsキーワードが入力されます.たとえば、filepath = "weights_{epoch:03d}-{val_loss:.4f}.h5"は、epochおよび検証セットlossに対応する複数のファイルを生成します.モニタ:監視する値、通常はval_accまたはval_lossまたはaccまたはloss verbose:情報表示モード、0または1.1は出力epochモデルのために情報を保存し、デフォルトは0は出力しないことを示し、情報形はEpoch 00001:val_acc improved from -inf to 0.49240, saving model to/xxx/checkpoint/model_001-0.3902.h5 save_best_only:Trueに設定すると、検証セットで最もパフォーマンスの良いモデルmode:‘auto’,‘min’,‘max’のいずれかにのみ保存されます.save_best_only=Trueの場合、パフォーマンス最適モデルの評価基準を決定します.たとえば、モニタリング値がval_の場合accの場合、モードはmax、検出値はval_lossの場合、モードはminであるべきです.autoモードでは,評価準則は被モニタリング値の名前から自動的に推定される.save_weights_only:Trueに設定すると、モデルウェイトのみが保存されます.そうしないと、モデル全体(モデル構造、構成情報などを含む)period:CheckPoint間の間隔のepoch数
  • が保存されます.

    EarlyStopping

  • 関数プロトタイプ
    keras.callbacks.EarlyStopping(monitor='val_loss', 
    								patience=0, 
    								verbose=0, 
    								mode='auto')
    
    モニタ値が改善すると、このコールバック関数は訓練
  • を中止する.
  • パラメータmonitor:監視が必要な量、通常はval_accまたはval_lossまたはaccまたはloss patience:early stopがアクティブ化されると(lossに比べてpatience個のepoch訓練が低下していないことが分かった場合)、patience個のepochを経て訓練が停止する.verbose:情報表示モードmode:‘auto’,‘min’,‘max’のいずれかであり,minモードで検出値が低下を停止すると訓練を中止する.maxモードでは、検出値が上昇しないと訓練を停止する.

  • 問題解決

  • ステップ1、ModelCheckpointを設定するパラメータ
    	filepath = "model_{epoch:03d}-{val_acc:.4f}.h5" # 
    	save_best_only=False ,# 
    	save_weights_only=True ,# 
    	patience = 10
    
    その他のパラメータは、デフォルト値を使用します.2、EarlyStopppingを設定するパラメータ
    	patience = 10, 
    	monitor='acc' 
    
    その他のパラメータはすべてデフォルト値を使用します.3、トレーニングモデルトレーニング中、epochごとにモデルファイルが保存されます.モデルファイルが多すぎるため、TensorBoardを使用してトレーニング中のトレーニングセットのaccとlossを表示し、val_と組み合わせることができます.acc=1は,いくつかのepochのモデルが最適モデルであることを決定し,モデルのファイル名に基づいて最適モデルを見つけることができる.

  • リファレンス

    https://keras-cn.readthedocs.io/en/latest/other/callbacks/