みなさま、こんばんわ🌜
まだまだ残暑が続いていますね🫠
1 | Python 3年生 ディープラーニング 2日目 |
---|
本日は『Python 3年生 ディープラーニング』という本の2日目の学習でした。
今日から実際にニューラルネットワークをプログラミングしていきます。
2 | TensorFlow |
---|
本に沿って TensorFlow(テンソルフロー)を使って、ニューラルネットワークのプログラミングを進めていきます。
TensorFlow について ChatGPT に聞いてみました👇👇👇
⭐ TensorFlow とは
TensorFlow(テンソルフロー)は、Google Brainチームによって開発されたオープンソースの 機械学習フレームワーク です。
TensorFlow は、機械学習モデルや特にディープラーニングモデルを構築・展開するための包括的なツール、ライブラリ、リソースのエコシステムを提供しています。
研究、学術界、産業界で、画像認識、音声認識、自然言語処理、コンピュータビジョンなどのさまざまなタスクに広く使用されています。
参考 | ChatGPT |
---|
TensorFlow ライブラリは少し複雑なので、初心者向けにもっとシンプルに使いやすくした Keras(ケラス)というライブラリがあります。
「Keras」というライブラリを使って、学習を進めていきます。
3 | ニューラルネットワークのプログラミング |
---|
ニューラルネットワークのプログラミングは以下の手順で進めていきます。
ニューラルネットワークのプログラミングの手順
- 外部ライブラリのインストール&インポート
- 学習データとテストデータを作る
- モデルを作る
- 学習の実行
- 学習の進捗具合をグラフ(見える)化
- 最終テスト(データを渡して予測)
本に沿って、XOR回路をニューラルネットワークで学習させてみました。
![]() |
外部ライブラリのインストール&インポート |
---|
まず最初に「外部ライブラリのインストール&インポート」を行いました。
使うだろうライブラリを、一括であらかじめインストール&インポートを行っておくと便利です😊️
![]() |
学習データとテストデータを作る |
---|
次に、データを「学習データ」と「テストデータ」に分けました。
データを分けるのは、「学習データ」でモデルに学習させた後、「テストデータ」でテストをするためです。
![]() |
モデルを作る |
---|
Kerasライブラリを使って、モデルの入れ物を作りました。
「layers.Dense」は「全結合層」といい、次の層にある全てのニューロンと結合する層のことです。
出力層の活性化関数(activation)では「softmax」を使っています。
「softmax」関数は、出力の値を確率に変換するための関数です。
![]() |
学習の実行 |
---|
ニューラルネットワークで学習を実行しました。
最終的な正解率は100.00%です。
精度が高い学習モデルですね😃
![]() |
学習の進捗具合をグラフ(見える)化 |
---|
数字だけではわからないので、よりわかりやすくするために、学習の進み具合をグラフ化してみました。
学習を重ねるごとに、「訓練」と「テスト」の結果が良くなっているのがわかりますね。
![]() |
最終テスト(データを渡して予測) |
---|
学習が終了したので、機械にテストデータ(問題)を渡して答えを予測させてみました。
答えはあっているので、モデルが「自分で答えを出せる法則」を見つけ出したと言えます。
4 | 数字の画像の学習 |
---|
XOR判定を少し修正して、「じゃんけん判定の学習」をさせてみました。
Keras ライブラリに用意されている「MNIST(エムニスト)」とう学習用の手書き数字画像を用いて、学習させてみました。
『Python 1年生』でも使った数字の画像(sklearn)を活用して、学習させてみました。
正解率は96~100%と高くなっています。
5 | ファッションの画像の学習 |
---|
続いて、少し複雑な画像(ファッションの白黒写真)を使って、学習を行ってみました。
しかし、正解率が低く、アンクルブーツがサンダルと誤表示されていたり、プルオーバーがコートと誤表示されて、他のプログラムと比べて精度が低くなっています。
学習の進捗状況をグラフ化してみると、「訓練」の方はうまくいっていますが、「テスト」は 過学習 が起こっていることがわかりました。
Keras ライブラリでは、画像は細かく切り刻んで並べて1本の線に加工してから、線としてデータを読み込みます。
数字などの簡単な画像では、この線で読み込む方法でうまくいっていましたが、ファッションなどの複雑な画像ではこの方法では精度が高い学習モデルを作ることが難しいことがわかりました。
今日はここまで❗
最後までお読みいただき、ありがとうございました😄
また来てね~😄👋