CNNってなんですか(2)
で、CNNってなんですか
Convolutional 層(畳み込み層)と Pooling層という2つの層があるNeural Networkのことっぽい
Convolutional層?
inputされた画像にフィルターをかけて
新たな画像を生み出すところ。
模式的に書くとこんな感じ???
注: 計算結果ではないですし、フィルタかけた後の画像はあくまでイメージで実際はこんなんじゃないです。
こういうインプット画像に対してフィルターを掛けて新たな画像をつくる。
にゃんこかわいい
そしてフィルターを何枚も用意して、たくさんイメージをつくる。
にゃんこかわいい
っていうことをやる層 (各画像の各ピクセルの値が特徴量相当??)
備忘録
input画像が32x32x3で、フィルターが5x5x3のとき ゼロ埋め(パディング)しないと、その後得られる画像サイズは28x28x1 ゼロ埋めした場合32x32x1
input画像のchannelとフィルターのchannelがあってないと計算出来ないらしい 行列計算するときに、2x2行列と3x3行列の掛け算ができない的な理由かなーってぼんやりおもってた。
フィルターを64枚用意したら 得られるアウトプットは32x32x64と考える(パディングあり) (64枚で1セットって感じかな)
Pooling層?
convolutional層で得られた画像を小さくする層 これによって、例えば、手書き文字認識の時とか ちょっと位置がずれただけで、判定できませーんっていう事態を避けられるようになるらしい。
イメージ的にはピントをぼかして、なんとなーくわかるっていう状況を つくる層という感じだとおもってる。
小さくするやり方はすっごく簡単なので マックスプーリングとか平均プーリングとかでググッて。
雑感
自分の理解はこんな感じ。数式使ったりもしてみたんだけど、定性的な理解が大切と思ってる。
なんとなーく、こんな事いってるのかなって思ったんだけど
「全然違うこと言ってるわ、こいつ。ププッ」
てことだったら恥ずかしいから教えて下さい。
これで、よくある四角が並んで、細かくなっていってっていうニューラルネットワークの図は 何をいってるのかわかるんじゃないかとおもうんだけど...。
次回こそ、きちんとコード載せます。