web-dev-qa-db-ja.com

ケラスでモデルを定義する(include_top = True)

ケラスでモデルを定義するときにinclude_top = Trueが何を意味するのか誰かに教えてもらえますか?

Kerasのドキュメントでこの行の意味を読みました。 include_top:完全に接続されたレイヤーをネットワークの上部に含めるかどうかを示します。

このコード行の直感的な説明はまだ探しています。

ResNet50(include_top=True)

ありがとう!

10

これらのモデルのほとんどは一連の畳み込み層であり、その後に1つまたはいくつかの高密度(または完全に接続された)層が続きます。

Include_topを使用すると、最終的な高密度レイヤーが必要かどうかを選択できます。

  • たたみ込み層は特徴抽出器として機能します。それらは画像内の一連のパターンを識別し、各レイヤーはパターンのパターンを確認することでより複雑なパターンを識別できます。

  • 密な層は、分類するために見つかったパターンを解釈することができます。この画像には、猫、犬、車などが含まれています。

重みについて:

  • 畳み込み層の重みは固定サイズです。これらはカーネルxフィルターのサイズです。例:10フィルターの3x3カーネル。畳み込み層は入力画像のサイズを気にしません。畳み込みを行い、入力画像のサイズに基づいて結果の画像を表示するだけです。 (これが不明確な場合は、畳み込みに関するいくつかの図解付きのチュートリアルを検索してください)

  • 高密度レイヤーの重みは、入力サイズに完全に依存しています。入力の要素ごとに1つの重みです。したがって、これには入力が常に同じサイズであることが要求されます。そうしないと、適切に学習された重みがありません。

このため、最終的な密集層を削除すると、入力サイズを定義できます(ドキュメントを参照)。 (そして、出力サイズはそれに応じて増加/減少します)。

しかし、解釈/分類レイヤーを失います。 (タスクに応じて、独自に追加できます)


プールとフラット化に関する追加情報

グローバルプール:

最後の畳み込み層の後、出力はまだ画像のようです。それらの形状は(images, X, Y, channels)で、XおよびYは2D画像の空間次元です。

モデルにGlobalMaxPooling2DまたはGlobalAveragePooling2Dがある場合、空間次元が削除されます。 Maxを使用すると、各チャネルの最高値のピクセルのみが取得されます。 Averageでは、各チャネルの平均値を取得します。結果は(images, channels)になり、空間次元はなくなります。

  • 利点:空間次元が破棄されるため、可変サイズの画像を使用できます
  • 欠点:サイズがまだ大きい場合、大量のデータが失われます。 (これはモデルとデータによっては大丈夫かもしれません)

フラット

フラット化により、空間次元は失われませんが、フィーチャに変換されます。 (images, X, Y, channels)から(images, X*Y*channels)へ。

XおよびYを定義する必要があるため、これには固定の入力形状が必要です。平坦化の後にDenseレイヤーを追加する場合、Denseレイヤーが必要になります。固定数の機能。

24
Daniel Möller

ドキュメンテーション を読むことは、いくつかの光を放ち、そして コード に頼ることもできます。 include_top=Trueは、完全に接続されたレイヤーがモデルの最後に追加されることを意味します。これは通常、モデルで実際に分類を実行する場合に必要です。 include_top=Trueパラメータclassesを指定できます(デフォルトは1000(ImageNetの場合)。 include_top=False、モデルは特徴抽出に使用できます。たとえば、オートエンコーダーを構築したり、その上に他のモデルをスタックしたりできます。ご了承ください input_shapeおよびpoolingパラメータは、include_topFalseです。

6
jdehesa