ニューラルネットワークでボトルネックアーキテクチャはどのように機能しますか?


21

ボトルネックアーキテクチャは、[2つの3x3 convレイヤー]が[1x1 conv、1つの3x3 conv、および1x1 convレイヤー]に置き換えられたResNet論文で見つかったタイプとして定義されます。ここに画像の説明を入力してください

1x1のconvレイヤーは、次元削減(および復元)の形式として使用されることを理解しています。これについては、別の投稿で説明しています。ただし、この構造が元のレイアウトと同じくらい効果的である理由についてはわかりません。

いくつかの良い説明が含まれる場合があります:どのストライド長が使用され、どのレイヤーで?各モジュールの入力および出力の寸法の例は何ですか?上記の図で56x56の機能マップはどのように表されますか?64-dはフィルターの数を指しますが、なぜこれが256-dフィルターと異なるのですか?各レイヤーで使用されるウェイトまたはフロップの数は?

どんな議論も大歓迎です!


オーバーフィッティングの一般化と防止に役立つと思います。しかし、それは単なるあいまいな思い出です。
クリス

回答:


5

ボトルネックアーキテクチャは、計算上の考慮事項により、非常に深いネットワークで使用されます。

質問に答えるには:

  1. 56x56の機能マップは、上記の画像では表されていません。このブロックは、入力サイズが224x224のResNetから取得されます。56x56は、中間層での入力のダウンサンプリングバージョンです。

  2. 64-dは、機能マップ(フィルター)の数を指します。ボトルネックアーキテクチャには256-dがあります。これは単に、より深いネットワーク用であり、入力としてより高解像度の画像を取得するため、より多くの機能マップが必要になるためです。

  3. ResNet 50の各ボトルネックレイヤーのパラメーターについては、この図を参照してください。


1
将来の読者のために、56x56の(WxH)を維持するために、1x1のconvにはstride = 1とpad = 0があると思います。同様に、3x3のconvにはサイズを保持するためにstride = 1とpad = 1があります。
-derekchen14

それでも理解できません。どちらも同じような量のパラメーターを持っているようですが、その場合、ブートルネック層の目的がまだわかりません。
user570593

-1

Newsteinの答えの2番目のポイントは誤解を招くものだと本当に思います。

64-dまたは256-dを参照してくださいチャンネル数入力特徴マップ -ない入力特徴マップの数。

例として、OPの質問の「ボトルネック」ブロック(図の右側)を考えます。

  • 256-dは、dimensionを持つ単一の入力フィーチャマップがあることを意味しn x n x 256ます。1x1, 64図手段に 64 フィルタ、それぞれがある1x1と持っている256チャンネルを(1x1x256)。
  • したがって、ここでは、単一のフィルター(1x1x256)と入力特徴マップ(n x n x 256)の畳み込みによりn x n出力が得られることがわかります。
  • これで 64フィルターができたので、出力を積み重ねることで、出力フィーチャマップの次元はn x n x 64です。

編集済み:

  • @Michael Chernick:わかりました。それでは、受け入れられた答えを修正しようとしたので、これは部分的な答えになります。時間をかけて私の部分的な答えを見て、正しく理解できたら教えてください。

評判に関係なく、コメントに回答を使用しないでください。
マイケルR.チャーニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.