2017-09-04 67 views
1

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

私はKeras Documentationでこの行の意味を読みました。 include_top:完全に接続されたレイヤーをネットワークの先頭に含めるかどうか。

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

ResNet50(include_top=True) 

ありがとうございます!

答えて

2

これらのモデルのほとんどは、1つまたは少数の高密度(または完全に接続された)レイヤーが続く一連の畳み込みレイヤーです。

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

  • 畳み込みレイヤは、特徴抽出器として機能する。それらは画像内の一連のパターンを識別し、各層はパターンのパターンを見ることによってより精巧なパターンを識別することができる。

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

が含まれています

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

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

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

しかし、あなたは解釈/分類レイヤーを失います。

+0

明確な説明をありがとう。 –

2

the documentationを読むと、少し明るくなります。また、the codeに頼ることもできます。 include_top=Trueを持つことは、モデルの最後に完全に接続されたレイヤーが追加されることを意味します。これは、モデルが実際に分類を実行するようにしたい場合に通常必要となるものです。 include_top=Trueを指定すると、パラメータclasses(ImageNetではデフォルトで1000)を指定できます。 include_top=Falseを使用すると、モデルをフィーチャ抽出に使用できます。たとえば、オートエンコーダを作成したり、他のモデルをその上に重ねたりすることができます。 input_shapepoolingのパラメータは、include_topFalseの場合にのみ指定する必要があります。

+0

高密度レイヤーを削除すると、純粋な畳み込みレイヤーは、入力ではなくカーネルサイズの後にウェイトが設定されるため、異なるシェイプを入力することができます。しかし、出力形状は入力形状に依存します。 –

+0

@ダニエルあなたはそれをより詳細に説明できますか? –

+0

この明確な説明をありがとう。 私は、「トップ」という言葉の直観を理解するのに苦労しています。 VGG16のアーキテクチャを見ると、完全に接続されたレイヤーが「ボトム」にあることがわかります。 したがって、「トップ」という単語は何を意味していますか? ありがとう! – cyberjoac

関連する問題