web-dev-qa-db-ja.com

CNNのフィルターの数は?

現在、theanoのAPIを見ています。

theano.tensor.nnet.conv2d(input, filters, input_shape=None, filter_shape=None, border_mode='valid', subsample=(1, 1), filter_flip=True, image_shape=None, **kwargs)

filter_shape(num_filter, num_channel, height, width)のタプルである場合、フィルターウィンドウを画像上でスライドさせている間、フィルターの数がストライドによって決定されるのではないので、これについて混乱していますか?このようにフィルター番号を指定するにはどうすればよいですか?パラメータストライド(存在する場合)によって計算される場合、それは合理的です。

また、機能マップという用語と混同していますが、それは各層のニューロンですか?バッチサイズはどうですか?それらはどのように相関していますか?

35
xxx222

各ニューロンは層への入力で異なる畳み込みを実行するため、フィルターの数はニューロンの数です(より正確には、ニューロンの入力重みは畳み込みカーネルを形成します)。

機能マップは、フィルターを適用した結果です(したがって、フィルターと同じ数の機能マップがあります)。そのサイズは、フィルターとストライドのウィンドウ/カーネルサイズの結果です。

次の画像は、概念を高レベルで説明するのに最適なものでした: enter image description here 入力画像に2つの異なる畳み込みフィルターが適用され、2つの異なる特徴マップ(フィルターの出力)が生成されることに注意してください。各特徴マップの各ピクセルは、畳み込み層の出力です。

たとえば、28x28の入力画像と、20個の7x7フィルターとストライド1を持つ畳み込みレイヤーがある場合、このレイヤーの出力で20個の22x22フィーチャマップを取得します。これは、幅=高さ= 22および深さ= num_channels = 20のボリュームとして次のレイヤーに表示されることに注意してください。 32x32x3ボリューム(畳み込みは2つの空間次元にのみ適用されます)。

52
rcpinto

フィルターの数は調整可能なハイパーパラメーターです。畳み込み層内のニューロンの数は、層の出力のサイズに等しくなります。画像の場合は、機能マップのサイズです。

1
gapy

フィルターの最適な数についての正しい答えはありません。これは、(イメージ)データのタイプと複雑さに強く依存します。適切な数の機能は、時間の経過とともに同様のタイプのデータセットを繰り返し使用した後の経験から学習されます。一般に、画像でキャプチャしたい機能が多いほど(そして潜在的に利用可能になるほど)、CNNで必要なフィルターの数が多くなります。

1
Nader