放射線科Dr.のちいさなたまご

趣味でやっているお勉強の記録です。
今日もわくわく、明日は何をしようかな・・・

初CNN!畳み込みニューラルネットワークへ

2020-06-22 08:47:58 | 趣味のprogramming

さて

四日坊主を予定しているUdemyの機械学習のコースですが、

 

【4日で体験!】 TensorFlow, Keras, Python 3 で学ぶディープラーニング体験講座
TensorFlow 2 対応! 4日間でディープラーニングを体験してみよう!Windows, MacでOK!

 

なんと四日坊主予定が、五日坊主予定に変更になりました!

(※個人の変更で、正式にはまだ四日です)

 

二日目まで終えた前回記事から、1日経ち、見事三日目を制覇する予定でしたが、

二日目の終わりの方にオマケ的な立ち位置でついている「CNNを動かそう!」の企画が、

PCのスペック的に辛くて、辛くて、もう本当に辛くて・・・涙

涙ちょちょぎれすぎた結果、

そこで三日目を終了してしまいました。

 

二日目に行った、三層パーセプトロンモデルは、

「入力画像→入力層→中間層1→出力層→最終出力」と、三つの層からできています。

実は、入力層には、28x28の合計784pixelの値をなんと一列に直してインプット。

これが大問題の原因です!!

なぜなら二次元平面で少しだけズレた画像が、

一列に直されることで、全く異なる画像として入力層にインプットされてしまうからです。

 

この問題を見事解決したのが、

CNN(Convolutional Neural Network)こと、畳み込みニューラルネットワーク!

「真っ直ぐな線がある」や「真ん中に穴あり」などの

画像を視認する上で人間も利用している「特徴量」を抽出するフィルターをかけることで、

二次元平面画像から特徴量を取り出して使えるモデルなのです。

 

このCNNの凄さにより、

三層パーセプトロンモデルでは正解率が9割超えが限界だったFashionMNISTデータでも、

余裕で9割超を達成することができる!!・・・はずでした。

 

特徴量抽出のためのフィルター(keras.layers.Conv2Dの関数で指定)

1ヵ所目で3x3を32枚、2ヵ所目で5x5x32を64枚

くらい使ってやるべきだったのですが

 

計算を始めたところ、これが終わらない。

epoch数1にしても60000枚終えるのに5分くらいかかる。

xxxx/60000と徐々に増えていくのですが、

もう増え方が遅すぎて、1の位までよく見える始末。

もう辛いよ辛いよ・・・と声が聞こえそうな気がしたので、

辛くないように設定し直した結果・・・!

 

 

はい。なんと、フィルターが1ヵ所目4枚、2箇所目4枚!!

こんなフィルターで正解を出せるのかと思ったら、

これが案外accuracy80くらいまでは余裕で達成してました。

 

自分としては自分のPCでプログラムを無事に動かせて、

適宜調整もできたので大満足

(本来のaccuracyをあげる目的の調整とは違う意味ですが)

 

というわけで、

辛そうなPCを見ていたら、自分も猛烈に疲れを感じ、

CNNを3日目として、4日で体験!を、5日で体験!と変更、PCを閉じたのでした。

おしまい。



最新の画像もっと見る

コメントを投稿