さて
四日坊主を予定しているUdemyの機械学習のコースですが、
なんと四日坊主予定が、五日坊主予定に変更になりました!
(※個人の変更で、正式にはまだ四日です)
二日目まで終えた前回記事から、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を閉じたのでした。
おしまい。
※コメント投稿者のブログIDはブログ作成者のみに通知されます