2017-12-27 29 views
2

モデルのトレーニングを開始すると、以前に保存されたモデルはありません。 model.compile()を安全に使用できます。私は今checkpointを使用して、さらなるトレーニングのためにモデルをh5ファイルに保存しました。model.compile()はケラス(テンソルフローバックエンド)のすべてのウェイトとバイアスを初期化しますか?

私はモデルをさらに訓練したいと思います。この時点で私は混乱しています:ここでmodel.compile()を使用できますか?そしてそれはmodel = load_model()声明の前後に置かれるべきですか? model.compile()がすべての重みと偏りを再初期化する場合は、model = load_model()の前に置きます。

以前に保存されたモデルがない場合、model.compile()が必要なのは私のようです。モデルを保存したら、model.compile()を使用する必要はありません。それは真実か偽ですか?そして、訓練されたモデルの使用を予測したい場合、予測する前にmodel.compile()を使用する必要がありますか?

答えて

2

いつ使用しますか?

あなたがcompileを使用している場合は、確かにそれはload_model()後でなければなりません。結局のところ、コンパイルするモデルが必要です。

compileは何をしますか?

コンパイルは損失関数オプティマイザメトリックを定義します。それで全部です。

これは重みとは関係がありません。事前に重み付けをしなくても、何度でもモデルをコンパイルできます。

にコンパイルされたモデルが必要です(トレーニングでは損失関数とオプティマイザが使用されるため)。しかし、予測のためにモデルをコンパイルする必要はありません。

複数回コンパイルする必要がありますか?あなたがロードされ

  • 損失関数
  • オプティマイザ
  • メトリック
  • (または作成)A:あなたはこれらのいずれかを変更したい

    • 場合のみモデルはまだコンパイルされていません。または、ロード/保存メソッドで以前のコンパイルが考慮されていない。再びコンパイルの

    帰結:

    再度モデルをコンパイルする場合、あなたはオプティマイザ状態を失うことになります。

    これは、学習率や勢いなどを調整するまで、最初は少しでも苦しんでいることを意味します。ただし、最初の学習率がそれほど大きい場合を除いて、重みには全くダメージはありません最初の訓練ステップは微調整された体重を乱暴に変化させる)。

  • 関連する問題