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

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

あと1坊主で制覇!

2020-06-24 23:19:43 | 趣味のprogramming

ついに、四日で体験!講座の3日目分まで終了しました!

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

 

もともと4日のコースだったはずが、

前記事に書いたように、二日目が1日で終わらなかったことから停滞気味に。

 

三日坊主は結構いけることに定評のある私ですが・・・!

やはり期待を裏切らず、三日坊主でいったん終了していました。

 

しかし、三日坊主も1日休んでカウントを0にすれば、

また三日坊主を始められるという強みがあります。。。

 

今日は、三日坊主の2サイクル目に突入、見事やり切りました!

あと残すところ、最終日の4日目分のみです。

 

今日のテーマは、画像認識にチャレンジ!!

Tensorflowの公式ページにかつて記載されていた画像認識のコードを使用。

Tensorflow2がでた関係か、今はGithubにしか置いてないので、

Githubから".py"という拡張子を指定してダウンロードします。

 

それを実行するための仮想環境が、tensorflow2.0.0ではダメ。

そこで、tensorflow1.1.4の仮想環境をダウンロードするための仮想環境を

新たにAnaconda Navigatorで構築し、terminalを開いて、"conda install tensorflow1.1.4"と指示。

ようやくこの仮想環境上でダウンロードした画像認識.pyファイルを走らせます!

 

仮想環境上に.pyファイルをPythonで読み込ませるためには、

pythonを先頭につけ、スペース開け、そのファイル名を入力してEnter.

プログラムが読み込まれ、

最初にデフォルトでついているパンダの絵がパンダである確率がでてきます。

 

このパンダの代わりに、自分で調達した動物の絵や写真を差し替えることもできます。

使ったコードは、

python classify_image.py --image_file="pug.jpg"

これで、パグちゃんがどのくらいのパグっぽいのかが計算できました

 

ふぅ。

今日はこれでおしまい!

 


初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を閉じたのでした。

おしまい。


Udemy講座でニューラルネットワーク体験

2020-06-20 18:27:23 | 趣味のprogramming

さて、昨日から始まりました

『四日坊主でディープラーニング体験』という期待を背負ったプログラム!

(正式名称は以下です。。笑)

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

 

昨日は、Anaconda様を手持ちのPCに召喚し、環境構築なるものを行い、

Jupyter Notebookなるものを立ち上げるところまで行きました。

 

今日はいよいよ、Tensorflowの初心者向けのintroductionに乗っているコードを

自分のPCで動かしてみるという段階です!

0〜9までの手書き数字60000枚で学習させる "MNIST"でレクチャーを聞いて、

靴やTシャツなどの種類を学習させる"FASHION MNIST"を使って自分でもやってみました。

 

 

ニューラルネットワークは、人間の脳の構造を模倣していて、

ニューロン(パーセプトロンと呼ばれる)を単層ではなく複数の層にして

ネットワークを構成したものを、ニューラルネットワーク、

その中でも4層以上重ねたものを、ディープニューラルネットワークと呼んでいます。

 

まずは3層のニューラルネットワークを実装して、理解を深めよう!

というのが今日、第二日目/四日坊主の目的でした。

 

ついついコードを動かすことに必死になりすぎて、

木を見て森を見ず的な状況になりがちなので、

ニューラルネットワークによる学習フローの復習で締めたいと思います。

 

まずは、データ集め。

 →今回はkerasのdatasetの中に入っていたのでコマンドで指定すれば完了。

次に、データの正規化。

 →Inputとして使うデータの数値が0〜1の間になるように調整。

 →今回はPixelの値が0~255段階だったので、255で割った。

次に、モデルの定義。

 → 今回は三層のニューラルネットワークを使うため、keras.models.Sequentialで定義。

次に、最適化手法や損失関数の指定。

 → model.compileの関数の中で、optimizerやloss関数を指定していく。

 → optimizerはAdam, RMSprop、SGDなどの種類があって、良い結果になるものを選ぶ

次に、トレーニングを実行。

 → トレーニングデータを入れて、model.fit関数で。

 → epochsの数は、最初は5回くらいで計算早く、良さそうなら増やしてく。

最後に、精度評価。

 → model.evaluate関数で。

 

以前少しかじったときは、本当にちんぷんかんぷん!で雰囲気しかわかりませんでした。

が、Rを使う機会が多くあったおかげで、

プログラミングの基礎の感覚が少しずつ掴めてきた感覚があります

 

いよいよ、明日は、四日坊主中、三日目!・・・鬼門。

三日坊主では終わりたくない!


Udemy講座でディープラーニングに挑戦

2020-06-19 22:43:52 | 趣味のprogramming

今朝、決定した3冊目の趣味のお勉強に選んだのは・・・

Udemyのプログラミング講座!

 

すでに良さそうな講座を10個以上、セールの時に購入していましたが(1つ1200円!Wow!!)

まとまった時間をとって取り組むことができずに、

Udemy My courseの本棚に眠っている子達の中から選びました(前回記事

 

まずは手早く、モチベーションが分かりやすそうなもの からトライすることに決定!

その名も・・・

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

つまり、4日間やれれば、三日坊主+1日がんばれば、やり切れる!!

 

格闘すること、数時間・・・

 

記念すべき、坊主の1日目、やり切りました〜〜!!

 

半年前くらいに少しだけ聞きかじったことがあったので、

自分のPCのApplicationを捜索すると既に、"Anaconda Navigator"なるものが!

しかし完全に使い方も忘却の彼方だったため、

アップデートがてら消去してまたインストール。(この作業がいるのかも不明、念のため)

蛇さんと格闘、なんとか環境構築をして、

その環境の中でさらにPythonyを呼び出し、Hello World!できるところまで終了

 

GoogleのCollabでボタンを押せば勝手に動いたMNISTを、

今度は自分のローカル環境で、ニューラルネットワークを作って動せる?!

なんて超耳寄りな2日目の宣伝を聞いて、

待ち遠しい!2日目!!!

と思いながらも、本日はここでおしまい〜〜

 


3冊目候補は・・・Udemy!検討会

2020-06-19 03:08:29 | 趣味のprogramming

3冊目は何にしようかなぁ・・・と思って本を眺めて。

正直、高校物理系を1つ増やす?線形代数も1つ増やす?ってよりも

どうしても自分の興味の中核の方に気持ちが流れて行ってしまい・・・

 

ついに。

Udemyの講座等に手をつけてみます!

 

Udemyにアクセスするのは今回が初めてではなく、過去にも何度かあります。

しかし・・・他にも視聴しなくてはならない動画もあり、こちらまで動画を見る気になれず。

価格が10分の1程度の1200円程度で1コース買えるタイミングでいくつも購入。

 

今のMy Courseのライブラリーには・・・ ジャンっ

 

と、数えきれない 11個ものコースが並んでいるではありませんか!

 

なんとか優先順位をつけるために、タイトルと説明(自分で適宜要約)を並べてみます。。。

【Pythonで学ぶ】OpenCVでの画像処理入門 6hr
OpenCVの導入・画像の基礎知識からエッジの検出・特徴抽出、特徴追跡など様々な画像処理を紹介。実践力強化のため、パーティクルフィルターも原理を理解した後、自力で実装します。

✅【Kaggleで学ぼう】Python と Keras で学ぶディープラーニング開発入門 4hr
データサイエンスの基礎を学んで、目指せKaggler (カグラー) ! TensorFlowとKerasで短期間にディープラーニングによるAI開発手法を学び、Kaggleコンペティションに挑戦!

✅ みんなのディープラーニング講座 ゼロからChainerとPythonで学ぶ深層学習の基礎 5hr 
初心者向け。ニューラルネットワーク用ライブラリChainerとプログラミング言語Pythonを使って、深層学習の基礎を習得。

✅ 【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 8.5hr
分析コンペティションに参加しながら回帰分析による売上予測、機械学習での顧客ターゲティングなど実践的なビジネス課題でデータ分析の一連の流れを身に着けよう。 プログラミング初心者にもおすすめ。

✅ 【世界で18万人が受講】実践 Python データサイエンス 17hr30min
データ解析の基本、可視化、統計、機械学習などデータサイエンスに関するあらゆる実践的なスキルがPythonで身に付く!numpyを使ったベクトルや行列の操作、pandasを使ったデータ処理、JSON、HTML、Excelシートなどのデータ形式の扱い、matplotlib、seabornを使ったデータの可視化など。

✅ 【キカガク流】プログラミング力向上のためのPythonで学ぶアルゴリズム論(前編)3.5hr
​​写経では理解できるようになってきたけれど、自分で考えて組む自信はないという方向けに、プログラミング力が圧倒的に向上できる内容です。【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - の受講を前提...

✅ Pythonで機械学習:scikit-learnで学ぶ識別入門 9hr
pythonの機械学習ライブラリscikit-learnを使って,識別の基本を徹底的にマスターしよう!このコースでは,機械学習における識別(分類・認識)の基礎をPythonを用いて学びます.このコースの目標は,機械学習でデータを識別するための一連の流れ(データの準備・前処理・識別器・評価など)を理解することです.Pythonの機械学習ライブラリscikit-learnとインタラクティブなプログラミング環境jupyter notebook (ipython notebook)を使って,実際にpythonコードを実行しながら学びます.

✅ 【NumPy・Python3で】ゼロから作るニューラルネットワーク 3hr47min
Python 3とNumPyで単層・多層ニューラルネットワークを自作して、機械学習の仕組みを理解しよう。
勾配降下法、ゼロからニューラルネットワーク、逆伝播(バックプロパゲーション)の仕組み、TensorFlowやScikit-learn, chainer, Caffe 2などでブラックボックス化されている仕組みを理解し、より効果的な設計や最適化ができるようになろう。

✅ 【画像判定AIアプリ開発・パート1】TensorFlow・Python・Flaskで作る画像判定AIアプリ開発入門 3hr39min
Python 3 でクローリングして画像データを収集、加工し、画像分類器を作ってみよう。ディープラーニングによるモデル作成、改善を自分の集めたデータで実践します。Flaskでウェブアプリ化, XcodeでiOSアプリ化にも挑戦します。

✅ 初心者必見!Pythonでニューラルネット・深層学習を完全攻略 7hr26min
Tensorflow + Kerasで難しい数学の基礎知識ゼロでも学べるAIとディープ・ラーニング(CNN・RNN)の基本。プログラミングの経験が無くても、数学的知識が無くても心配要りません。

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

 

・・・はい。

購入当時の混乱を思い出しました。

どれがいいのか全くもって見当がつきません。

とりあえず、どれがいいのか分からないので、「4日間で体験!」と銘打った最後のにしてみます 適当

 

売り文句を詳しくみてみると、

  • 数学やプログラミングの知識がなくても、ディープラーニングのプログラムを体験できます。
  • 数式を理解できなくても、概念的にどういう処理をしているのか、を直感的に理解できるようになります。
  • 畳み込みやプーリングなど難解な処理の仕組みを図解で理解できるようになります。
  • Python 3 + TensorFlowを使って、パソコン上でディープラーニングを体験できます。
  • ボーナストラックでは、Python 3の基礎を解説します

とのことで、Python3に少し触ったことがあるのでも良さそうな空気が!

溺れるものはワラをも掴む 信じるものは救われると信じて、決定!!