

<https://stackoverflow.com/questions/42786717/how-to-calculate-the-number-of-
parameters-for-convolutional-neural-network>

上のサイトなどを見ていてわからないところがあったので質問します。

[code]

    # name size parameters
    --- -------- ------------------------- ------------------------
    0 input 1x28x28 0
    1 conv2d1 (28-(5-1))=24 -> 32x24x24 (5*5*1+1)*32 = 832
    2 maxpool1 32x12x12 0
    3 conv2d2 (12-(3-1))=10 -> 32x10x10 (3*3*32+1)*32 = 9'248
    4 maxpool2 32x5x5 0
    5 dense 256 (32*5*5+1)*256 = 205'056
    6 output 10 (256+1)*10 = 2'570
    
[/code]

上のようなCNNモデルがあった時、最初のconv2d1の層で32個のフィルターを用意していますよね？  
これはそれぞれ異なる32種類の5*5の重み行列という理解でした。

これに対してpooling層をかませることで、32*12*12の出力になることまではわかります。  
（12*12が32枚あるようなイメージ）

ただ、conv2d2でこの出力にまた32個の重み行列フィルターをかけると、さらに32倍になってしまっておかしいような気がするのですが、合ってますか？

よろしくお願いします。


CC BY-SA 4.0
2019-07-21T08:24:02.183
56784
2019-09-03T14:33:08.670
2019-07-21T11:54:05.343
3060
35189
question
python
convolutional layerについて


畳み込み層で得られる画像のイメージで「12*12が32枚あるようなイメージ」とありますが  
より概念的には、サイズが12x12で、チャネル数が32の1枚の画像、というほうが近いです。  
下記のサイトが参考になるかと思います。  
<https://qiita.com/icoxfog417/items/5aa1b3f87bb294f84bac>

conv2d2層のパラメータ数を計算する式の説明としては  
サイズが3x3でチャネル数が32のカーネルが32個あるので、バイアスの1層分を足して  
(3*3*32+1)*32 = 9'248  
という内容になります。


CC BY-SA 4.0
2019-09-03T14:33:08.670
57816
2019-09-03T14:33:08.670
19500
56784
answer