必要に応じて、コンテンツの保存と分類を行います。モデルは以下の複数のコンポーネントで構成されています。使用すると、これらを一度にディスクに保存したり、一部のみを選択して保存できます。形式)で1つのアーカイブに保存。これは標準的な方法です。ファイルとして)保存。(通常、モデルのトレーニング時に使用)。次にこれらのオプションの用途と機能をそれぞれ見ていきましょう。秒しかない場合は、次のことを知っておく必要があります。keras.models.load_model('path/to/location')では、詳細を見てみましょう。properly.モデル全体の保存と読み込みモデル全体を1つのアーティファクトとして保存できます。その場合、以下が含まれます。モデルのアーキテクチャ/構成モデルの重み値(トレーニング時に学習される)モデルのコンパイル情報(compile()が呼び出された場合)オプティマイザとその状態(存在する場合)。これは、中断した所からトレーニングを再開するために使用します。つの形式を使用できます。これは、model.save()を使用する場合のデフォルトです。形式に切り替えることができます。save_format='h5'をsave()に渡す。.h5または.kerasで終わるファイル名をsave()に渡す。含まれるものmodel.save('my_model')を呼び出すと、以下を含むmy_modelという名前のフォルダが作成されます。variablesモデルアーキテクチャとトレーニング構成(オプティマイザ、損失、メトリックを含む)は、saved_model.pbに格納されます。重みはvariables/ディレクトリに保存されます。形式」)をご覧ください。形式はクラス名、呼び出し関数、損失、および重み(および実装されている場合は構成)を保存します。呼び出し関数は、モデル/レイヤーの計算グラフを定義します。モデル/レイヤーの構成がない場合、トレーニング、評価、および推論に使用できる元のモデルのようなモデルを作成するために呼び出し関数が使用されます。カスタムモデルまたはレイヤークラスを作成する場合は、常にget_configおよびfrom_configメソッドを使用して定義することをお勧めします。これにより、必要に応じて後で計算を簡単に更新できます。詳細については「カスタムオブジェクト」をご覧ください。形式からカスタムレイヤーを読み込んだ場合の例です。0x7f1bada9aa00>上記の例のように、ローダーは、元のモデルのように機能する新しいモデルクラスを動的に作成します。ファイルの保存もサポートしています。代わる軽量な形式です。異なり、model.add_loss()およびmodel.add_metric()を介して追加された外部損失およびメトリックは保存されません。モデルにそのような損失とメトリックがあり、トレーニングを再開する場合は、モデルを読み込んだ後、これらの損失を自分で追加する必要があります。これは、self.add_loss()およびself.add_metric()を介して内部レイヤーで作成された損失/メトリックには適用されないことに注意してください。レイヤーが読み込まれる限り、これらの損失とメトリックはレイヤーのcallメソッドの一部であるため保持されます。カスタムレイヤーなどのカスタムオブジェクトの計算グラフは、保存されたファイルに含まれません。クラス/関数にアクセスする必要があります。詳細については、「カスタムオブジェクト」をご覧ください。アーキテクチャの保存モデルの構成(アーキテクチャ)は、モデルに含まれるレイヤー、およびこれらのレイヤーの接続方法を指定します*。モデルの構成がある場合、コンパイル情報なしで、重みが新しく初期化された状態でモデルを作成することができます。使用して定義されたモデルにのみ適用されることに注意してください。モデルの構成これらのタイプのモデルは、レイヤーの明示的なグラフです。それらの構成は常に構造化された形式で提供されます。dictが返されます。同じワークフローは、シリアル化可能なレイヤーでも使用できます。この文字列は、元のモデルクラスなしで読み込めます。これはモデル固有であり、レイヤー向けではありません。keras.models.model_from_json(json_config)カスタムオブジェクトモデルとレイヤーサブクラス化されたモデルとレイヤーのアーキテクチャは、メソッド__init__およびcallで定義されています。互換性のある構成にシリアル化できません。pickleなどを使用してバイトコードのシリアル化を試すことができますが、これは安全ではなく、モデルを別のシステムに読み込むことはできません。メソッドを上書きする必要があります。認識できるように、カスタムオブジェクトの登録を使用する必要があります。get_configメソッドは必要ありません。カスタムオブジェクトとして登録されている限り、関数名は読み込みに十分です。グラフを以下のように読み込むことができます。その場合、custom_objectsを提供する必要はありません。my_model/assetsこの方法にはいくつかの欠点があることに注意してください。再作成できないモデルをプロダクションにロールアウトしないように、履歴を追跡するために使用されたカスタムオブジェクトに常にアクセスできる必要があります。モデルではないので、簡単には使えません。.predict()や.fit()へのアクセスはありません。この方法は推奨されていませんが、カスタムオブジェクトのコードを紛失した場合やtf.keras.models.load_model()でモデルを読み込む際に問題が発生した場合などに役に立ちます。詳細は、tf.saved_model.loadに関するページをご覧ください。シリアル化可能なディクショナリを返す必要があります。構成から作成された新しいレイヤーまたはモデルオブジェクトを返します。cls(**config)を返します。構成を生成したクラスについての情報を保持します。上記の例では、tf.keras.layers.serializeはシリアル化された形態のカスタムレイヤーを生成します。すべての組み込みのレイヤー、モデル、オプティマイザ、およびメトリッククラスのマスターリストを保持し、from_configを呼び出すための正しいクラスを見つけるために使用されます。layer)が発生します。このリストにカスタムクラスを登録する方法は、いくつかあります。読み込み関数でcustom_objects引数を設定する。keras.Model.from_config(config)メモリ内でモデルのクローンを作成するまた、tf.keras.models.clone_model()を通じて、メモリ内でモデルのクローンを作成できます。(したがって、コンパイル情報やレイヤーの重み値は保持されません)。keras.models.clone_model(model)モデルの重み値のみを保存および読み込むモデルの重みのみを保存および読み込むように選択できます。これは次の場合に役立ちます。推論のためのモデルだけが必要とされる場合。この場合、トレーニングを再開する必要がないため、コンパイル情報やオプティマイザの状態は必要ありません。以前のモデルの状態を再利用して新しいモデルをトレーニングするため、以前のモデルのコンパイル情報は必要ありません。API異なるオブジェクト間で重みをコピーするにはget_weightsおよびset_weightsを使用します。numpy配列のリストを返す。モデルの重みをweights引数の値に設定する。b.numpy())ステートレスレイヤーの場合ステートレスレイヤーは重みの順序や数を変更しないため、ステートレスレイヤーが余分にある場合や不足している場合でも、モデルのアーキテクチャは互換性があります。API以下の形式でmodel.save_weightsを呼び出すことにより、重みをディスクに保存できます。