Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Python DeepLearningに再挑戦 25 CNNの可視化

概要

Python DeepLearningに再挑戦 25 CNNの可視化

参考書籍

1層目の重みの可視化

  • train_convnet.pyの1層目の畳み込み層の重みの形状は、(30,1,5,5)=サイズが5x5でチャンネルが1のフィルターが30個。

  • 5x5でチャンネル数が1ということは、フィルターは1チャンネルのグレー画像として可視化できるということを意味する。

  • vsualize_filter.pyを実行して、畳み込み層のフィルターを画像として表示する。(これにより、最も小さな値は黒(0)、最も大きな値は(255)に正規化して表示する。

f:id:riikku:20161227070153p:plain

なるほどフィルターはそういうイメージを持つとわかりやすいな。

f:id:riikku:20161227071227p:plain

階層構造による情報抽出

  • ディープラーニングの可視化に関する研究によると、層が深くなるにしたがって、抽出される情報はより抽象化されていく。

  • AlexNetという有名な8層のCNNのイメージは以下の通り。

http://www.cc.gatech.edu/~hays/compvision/proj6/deepNetVis.png

最後の方、水彩画みたいですごいw ここまでできれば確かに認識精度たかそうやな。

代表的なCNN

  • LeNet - 現在と違うのは、活性化関数に、ReLUではなく、シグモイド関数が使われている。

  • AlexNet - CNNの代表格。

  • 活性化関数にReLUを用いる

  • LRN(Local Response Normalization)という局所的正規化を行う層を用いる
  • Dropoutを使用する。

CNN , AlexNetすげー!