ケラスでモデルを定義するときにinclude_top = Trueが何を意味するのか誰かに教えてもらえますか?
Kerasのドキュメントでこの行の意味を読みました。 include_top:完全に接続されたレイヤーをネットワークの上部に含めるかどうかを示します。
このコード行の直感的な説明はまだ探しています。
ResNet50(include_top=True)
ありがとう!
これらのモデルのほとんどは一連の畳み込み層であり、その後に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
レイヤーが必要になります。固定数の機能。
ドキュメンテーション を読むことは、いくつかの光を放ち、そして コード に頼ることもできます。 include_top=True
は、完全に接続されたレイヤーがモデルの最後に追加されることを意味します。これは通常、モデルで実際に分類を実行する場合に必要です。 include_top=True
パラメータclasses
を指定できます(デフォルトは1000
(ImageNetの場合)。 include_top=False
、モデルは特徴抽出に使用できます。たとえば、オートエンコーダーを構築したり、その上に他のモデルをスタックしたりできます。ご了承ください input_shape
およびpooling
パラメータは、include_top
はFalse
です。