Python DeepLearningに再挑戦 25 CNNの可視化
概要
Python DeepLearningに再挑戦 25 CNNの可視化
参考書籍
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
1層目の重みの可視化
train_convnet.py
の1層目の畳み込み層の重みの形状は、(30,1,5,5)=サイズが5x5でチャンネルが1のフィルターが30個。5x5でチャンネル数が1ということは、フィルターは1チャンネルのグレー画像として可視化できるということを意味する。
vsualize_filter.py
を実行して、畳み込み層のフィルターを画像として表示する。(これにより、最も小さな値は黒(0)、最も大きな値は(255)に正規化して表示する。
なるほどフィルターはそういうイメージを持つとわかりやすいな。
階層構造による情報抽出
ディープラーニングの可視化に関する研究によると、層が深くなるにしたがって、抽出される情報はより抽象化されていく。
AlexNetという有名な8層のCNNのイメージは以下の通り。
最後の方、水彩画みたいですごいw ここまでできれば確かに認識精度たかそうやな。
代表的なCNN
LeNet - 現在と違うのは、活性化関数に、ReLUではなく、シグモイド関数が使われている。
AlexNet - CNNの代表格。
活性化関数にReLUを用いる
- LRN(Local Response Normalization)という局所的正規化を行う層を用いる
- Dropoutを使用する。
CNN , AlexNetすげー!