機械学習

Kerasに含まれるMNIST(手描き数字)のデータを取得してみた

これから、ニューラルネットワークで手書き数字を分類することを考えていくが、その際に、Kerasに含まれるMNIST(手描き数字)のデータを利用することができる。

今回は、Kerasに含まれるMNIST(手描き数字)のデータを読み込み、中身を確認してみたので、そのサンプルプログラムを共有する。

Kerasに含まれるMNIST(手描き数字)のデータを読み込んだ結果は以下の通りで、訓練用データとテスト用データを別々に取得することができる。

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(手描き数字)のデータを確認した結果は以下の通りで、入力データと正解データの内容が一致していることが確認できる。

%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()
手書き数字の訓練用データの確認
%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件確認した結果は、以下の通り。

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])
手書き数字の入力データ1件の確認

なお、上記MNIST(手描き数字)の入力データの説明は、以下のサイトを参照のこと。
https://atmarkit.itmedia.co.jp/ait/articles/2001/22/news012.html

また、ディープラーニングでKerasに含まれるMNIST(手描き数字)の入力データを利用する際、以下のように、入力データを0~1の範囲に変換して利用する。

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)
手書き数字の入力データ1件(変換後)の確認

さらに、ディープラーニングでKerasに含まれるMNIST(手描き数字)の正解データを利用する際、以下のように、正解データをOne-Hotエンコーディング変換して利用する。

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))
手書き数字の正解データ5件(変換後)の確認

要点まとめ

  • ニューラルネットワークで手書き数字を分類することを考える際、Kerasに含まれるMNIST(手描き数字)のデータを利用できる。