これから、ニューラルネットワークで手書き数字を分類することを考えていくが、その際に、Kerasに含まれるMNIST(手描き数字)のデータを利用することができる。
今回は、Kerasに含まれるMNIST(手描き数字)のデータを読み込み、中身を確認してみたので、そのサンプルプログラムを共有する。
Kerasに含まれるMNIST(手描き数字)のデータを読み込んだ結果は以下の通りで、訓練用データとテスト用データを別々に取得することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from tensorflow.keras.datasets import mnist # Kerasに含まれているMNIST(手描き数字)のデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだデータの形状を確認 print("*** x_train(訓練用データ(入力データ))の形状 ***") print(x_train.shape) print("*** y_train(訓練用データ(正解データ))の形状 ***") print(y_train.shape) print() print("*** x_test(テスト用データ(入力データ))の形状 ***") print(x_test.shape) print("*** y_test(テスト用データ(正解データ))の形状 ***") print(y_test.shape) |
また、Kerasに含まれるMNIST(手描き数字)のデータを確認した結果は以下の通りで、入力データと正解データの内容が一致していることが確認できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | %matplotlib inline from tensorflow.keras.datasets import mnist import matplotlib.pyplot as plt # Kerasに含まれているMNIST(手描き数字)のデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだ訓練用データを表示 print("*** y_train(訓練用データ(正解データ))の先頭5件のデータ ***") print(y_train[0:5]) print() print("*** x_train(訓練用データ(入力データ))の先頭5件のデータ ***") for i in range(5): plt.subplot(1, 5, i+1) plt.title("Label: " + str(i)) plt.imshow(x_train[i].reshape(28,28), cmap=None) plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | %matplotlib inline from tensorflow.keras.datasets import mnist import matplotlib.pyplot as plt # Kerasに含まれているMNIST(手描き数字)のデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだテスト用データを表示 print("*** y_test(テスト用データ(正解データ))の先頭5件のデータ ***") print(y_test[0:5]) print() print("*** x_test(テスト用データ(入力データ))の先頭5件のデータ ***") for i in range(5): plt.subplot(1, 5, i+1) plt.title("Label: " + str(i)) plt.imshow(x_test[i].reshape(28,28), cmap=None) plt.show() |
サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...
さらに、Kerasに含まれるMNIST(手描き数字)の入力データを1件確認した結果は、以下の通り。
1 2 3 4 5 6 7 8 | from tensorflow.keras.datasets import mnist # Kerasに含まれているMNIST(手描き数字)のデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだ訓練用データ(入力データ)の1件目を表示 print("*** x_train(訓練用データ(入力データ))の1件目のデータ ***") print(x_train[0]) |
なお、上記MNIST(手描き数字)の入力データの説明は、以下のサイトを参照のこと。
https://atmarkit.itmedia.co.jp/ait/articles/2001/22/news012.html
また、ディープラーニングでKerasに含まれるMNIST(手描き数字)の入力データを利用する際、以下のように、入力データを0~1の範囲に変換して利用する。
1 2 3 4 5 6 7 8 9 10 | from tensorflow.keras.datasets import mnist import numpy as np # Kerasに含まれているMNIST(手描き数字)のデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだ訓練用データ(入力データ)の1件目を255で除算した値を表示 print("*** x_train(訓練用データ(入力データ))の1件目の変換後データ ***") np.set_printoptions(precision=2, suppress=True) print(x_train[0]/255.0) |
さらに、ディープラーニングでKerasに含まれるMNIST(手描き数字)の正解データを利用する際、以下のように、正解データをOne-Hotエンコーディング変換して利用する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical # Kerasに含まれているMNISTのデータを読み込む (x_train, y_train), (x_test, y_test) = mnist.load_data() # 読み込んだ訓練用データ(y座標)の先頭5件を表示 print("*** y_train(訓練用データ(正解データ))の先頭5件のデータ ***") print(y_train[0:5]) print() # 読み込んだ訓練用データ(y座標)の先頭5件を # One-Hotエンコーディング変換した値を表示 print("*** y_train(訓練用データ(正解データ))の先頭5件の変換後データ ***") print(to_categorical(y_train[0:5],10)) |
要点まとめ
- ニューラルネットワークで手書き数字を分類することを考える際、Kerasに含まれるMNIST(手描き数字)のデータを利用できる。