最近、caffeのPoolingレイヤーで「global_pooling」フラグを見つけましたが、ここのドキュメント( Layer Catalogue) でもここ( Pooling doxygen doc )でもそれについてのsthを見つけることができませんでした=)。
通常のプールレイヤーの動作と比較して、これに対する簡単な前向きな説明はありますか?
グローバルプーリングを使用すると、次元が3Dから1Dに減少します。したがって、グローバルプーリングは、フィーチャマップごとに1つの応答を出力します。これは、最大または平均、あるいは使用するその他のプーリング操作にすることができます。
畳み込みニューラルネットワークのバックエンドの最後で、密なレイヤーで機能する形状を取得するためによく使用されます。したがって、平坦化を適用する必要はありません。
畳み込みは、任意の画像入力サイズ(十分な大きさ)で機能します。ただし、最後に完全に接続されたレイヤーがある場合、このレイヤーには固定の入力サイズが必要です。したがって、ネットワーク全体には固定の画像入力サイズが必要です。
ただし、完全に接続されたレイヤーを削除して、畳み込みレイヤーを操作することはできます。最後に、クラスと同じ数のフィルターを持つ畳み込み層を作成できます。ただし、クラスごとに1つの値が必要であり、そのクラスの確率を示します。したがって、残りの特徴マップ全体にプーリングフィルタを適用します。したがって、このプーリングは常に必要なだけ大きいため、「グローバル」です。対照的に、通常のプーリングレイヤーのサイズは固定されています(例:2x2または3x3)。
これは一般的な概念です。他のライブラリでグローバルプーリングを見つけることもできます。 ラザニア 。文献で良い参考資料が必要な場合は、 Network In Network を読むことをお勧めします。
コーヒーのフラグ/パラメータに関する情報を探している場合は、 '$CAFFE_ROOT/src/caffe/proto/caffe.proto'
のコメントで調べるのが最善です。'global_pooling'
パラメータの場合 コメントによると :
// If global_pooling then it will pool over the size of the bottom by doing // kernel_h = bottom->height and kernel_w = bottom->width
Caffeレイヤーの詳細については、 このヘルプページ を参照してください。
GPレイヤーを適用すると、特徴マップ全体から1つの値のみが取得されます。ここで、カーネルサイズは特徴マップのh×wです。 GPレイヤーは、3次元特徴マップの空間次元を縮小するために使用されます。ただし、GPレイヤーは、より極端なタイプの次元削減を実行します。この場合、次元h×w×dのフィーチャマップのサイズが縮小されて、次元が1×1×dになります。 GPレイヤーは、すべてのhw値の平均を取るだけで、各h×w特徴マップを単一の数値に減らします。