kabaohのブログ

仕事ができなすぎて辛いので、趣味に逃げるカバ野郎

CNNってなんですか(2)

で、CNNってなんですか

Convolutional 層(畳み込み層)と Pooling層という2つの層があるNeural Networkのことっぽい

Convolutional層?

inputされた画像にフィルターをかけて
新たな画像を生み出すところ。

模式的に書くとこんな感じ???
注: 計算結果ではないですし、フィルタかけた後の画像はあくまでイメージで実際はこんなんじゃないです。
f:id:kabaoh:20160903013411p:plain

こういうインプット画像に対してフィルターを掛けて新たな画像をつくる。
にゃんこかわいい
f:id:kabaoh:20160903014510p:plain

そしてフィルターを何枚も用意して、たくさんイメージをつくる。
にゃんこかわいい
f:id:kabaoh:20160903014529p:plain

っていうことをやる層 (各画像の各ピクセルの値が特徴量相当??)

備忘録

input画像が32x32x3で、フィルターが5x5x3のとき  
ゼロ埋め(パディング)しないと、その後得られる画像サイズは28x28x1  
ゼロ埋めした場合32x32x1  
input画像のchannelとフィルターのchannelがあってないと計算出来ないらしい  
行列計算するときに、2x2行列と3x3行列の掛け算ができない的な理由かなーってぼんやりおもってた。  
フィルターを64枚用意したら
得られるアウトプットは32x32x64と考える(パディングあり)
(64枚で1セットって感じかな)

Pooling層?

convolutional層で得られた画像を小さくする層 これによって、例えば、手書き文字認識の時とか ちょっと位置がずれただけで、判定できませーんっていう事態を避けられるようになるらしい。

イメージ的にはピントをぼかして、なんとなーくわかるっていう状況を つくる層という感じだとおもってる。

小さくするやり方はすっごく簡単なので マックスプーリングとか平均プーリングとかでググッて。

雑感

自分の理解はこんな感じ。数式使ったりもしてみたんだけど、定性的な理解が大切と思ってる。
なんとなーく、こんな事いってるのかなって思ったんだけど
「全然違うこと言ってるわ、こいつ。ププッ」
てことだったら恥ずかしいから教えて下さい。

これで、よくある四角が並んで、細かくなっていってっていうニューラルネットワークの図は 何をいってるのかわかるんじゃないかとおもうんだけど...。

次回こそ、きちんとコード載せます。