MNIST データセットを紹介する. 利用条件は利用者で確認すること.
【目次】
■ MNIST データセット
MNIST データセットは,公開されているデータセット(オープンデータ)である.
0 から 9 までの 10 種類の手書き文字についての, モノクロ画像と,各画像に付いた「0から9までの数値」のラベルから構成されるデータセットである.
(内訳)70000枚の内訳は次の通りである
60000枚:教師データ
10000枚:検証データ
【文献】
Y. Lecun, L. Bottou, Y. Bengio and P. Haffner, Gradient-based learning applied to document recognition, vol. 86, no. 11, pp. 2278-2324, 1998.
【サイト内の関連ページ】
【関連する外部ページ】
Google Colaboratory のページ:
次のリンクをクリックすると,Google Colaboratory のノートブックが開く. そして,Google アカウントでログインすると,Google Colaboratory のノートブック内のコード等を編集したり再実行したりができる.編集した場合でも,他の人に影響が出たりということはない.そして,編集後のものを,各自の Google ドライブ内に保存することもできる.
https://colab.research.google.com/drive/1awZ1ex4KbAJ6hw4VfjKwE-kuiNVVHrfJ?usp=sharing
【サイト内の関連ページ】
【関連する外部ページ】
Python の公式ページ: https://www.python.org/
Windows では,コマンドプロン プトを管理者として実行し, 次のコマンドを実行する.
python -m pip install -U tensorflow-gpu tensorflow_datasets keras numpy matplotlib
Windows での TensorFlow のインストールの詳細: 別ページ »で説明
(このページで,Build Tools for Visual Studio 2022,NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNNのインストールも説明している.)
Ubuntu では,次のコマンドを実行.
sudo apt -y update sudo apt -y install python3-numpy python3-matplotlib sudo pip3 install -U tensorflow-gpu tensorflow_datasets keras
Ubuntu での TensorFlow のインストールの詳細: 別ページ »で説明
(このページで,NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNNのインストールも説明している.)
【Python の利用】
Python は,次のコマンドで起動できる.
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
これ以降の操作は,jupyter qtconsole で行う.
jupyter qtconsole
import tensorflow as tf import numpy as np import tensorflow_datasets as tfds %matplotlib inline import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Suppress Matplotlib warnings
結果は,TensorFlow の Tensor である.
type は型,shape はサイズ,np.max と np.mi は最大値と最小値.
tensorflow_datasets の loadで, 「batch_size = -1」を指定して,一括読み込みを行っている.
mnist, mnist_metadata = tfds.load('mnist', with_info = True, shuffle_files=True, as_supervised=True, batch_size = -1) x_train, y_train, x_test, y_test = mnist['train'][0], mnist['train'][1], mnist['test'][0], mnist['test'][1] print(mnist_metadata)
MatplotLib を用いて,0 番目の画像を表示する
NUM = 0 plt.figure() plt.imshow(x_train[NUM,:,:,0], cmap='gray') plt.colorbar() plt.gca().grid(False) plt.show()
print(mnist_metadata) print(mnist_metadata.features["label"].num_classes) print(mnist_metadata.features["label"].names)
MatplotLib を用いて,複数の画像を並べて表示する.
class_names = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] plt.style.use('default') plt.figure(figsize=(10,10)) for i in range(25): plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(x_train[i], cmap=plt.cm.binary) plt.xlabel(class_names[y_train[i]]) plt.show()
ロード時に「as_supervised=False」としたときは,「image, label = data['image'], data['label']」
ds_train = mnist['train'] it = ds_train.cache().shuffle(1000).batch(128).prefetch(tf.data.experimental.AUTOTUNE) for data in it.take(1): image, label = data[0], data[1] print(image) print(label)
train = tfds.as_dataframe(mnist['train'], mnist_metadata) test = tfds.as_dataframe(mnist['test'], mnist_metadata) print(train) print(test)
行数は len(<データフレーム>), 属性数は len(<データフレーム>.columns)
print(len(train)) print(len(train.columns)) print(len(test)) print(len(test.columns))
train = tfds.as_dataframe(mnist['train'].take(10), mnist_metadata) test = tfds.as_dataframe(mnist['test'].take(10), mnist_metadata) print(train) print(test)
行数は len(<データフレーム>), 属性数は len(<データフレーム>.columns)
print(len(train)) print(len(train.columns)) print(len(test)) print(len(test.columns))