見出し画像

MNIST「Modified National Institute of Standards and Technology」

MNISTは、手書き数字の画像データセットです。このデータセットは機械学習の分野で広く使用されており、特に画像認識技術の初心者がアルゴリズムの訓練やテストによく使用します。

MNISTは「Modified National Institute of Standards and Technology」の略で、データセットには0から9までの数字が含まれています。

具体的には、MNISTデータセットには60,000枚の訓練用画像と10,000枚のテスト用画像が含まれており、それぞれの画像は28×28ピクセルのグレースケールで表されています。

各画像は、それぞれの数字を表すラベルとともに提供されており、機械学習モデルが画像から数字を推測します。

MNISTデータセットに対して追加で学習することができます。自分で作成したオリジナルデータを用いて、学習モデルを調整することができます。

PythonでMNISTデータセットを使用して手書き数字を認識する簡単なニューラルネットワークモデルを構築するサンプルコードを以下に示します。

人工知能の計算によく使われているTensorFlowとKerasを使用しています。

まずは、必要なライブラリをインストールします:

pip install tensorflow numpy matplotlib

次に、MNISTデータセットを読み込み、データを前処理を行います。

前処理を行ったあとに、ニューラルネットワークモデルを構築して訓練します。

最後に、モデルの評価とテスト画像の予測を行います。

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

# MNISTデータセットの読み込み
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# データの前処理
train_images = train_images / 255.0
test_images = test_images / 255.0

# モデルの構築
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),  # 28x28の画像を1D配列に変換
    keras.layers.Dense(128, activation='relu'),  # 128ユニットの隠れ層
    keras.layers.Dense(10, activation='softmax') # 10ユニットの出力層(数字0-9)
])

# モデルのコンパイル
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# モデルの訓練
model.fit(train_images, train_labels, epochs=5)

# モデルの評価
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)

# テスト画像で予測
predictions = model.predict(test_images)

# 予測結果を表示するための関数
def plot_image(i, predictions_array, true_label, img):
    predictions_array, true_label, img = predictions_array, true_label[i], img[i]
    plt.grid(False)
    plt.xticks([])
    plt.yticks([])
  
    plt.imshow(img, cmap=plt.cm.binary)
  
    predicted_label = np.argmax(predictions_array)
    if predicted_label == true_label:
        color = 'blue'
    else:
        color = 'red'
  
    plt.xlabel("{} {:2.0f}% ({})".format(predicted_label,
                                100*np.max(predictions_array),
                                true_label),
                                color=color)

# 最初の25個のテスト画像と予測ラベルの表示
plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plot_image(i, predictions[i], test_labels, test_images)
plt.show()

このコードは、MNISTデータセットを読み込んで、画像を正規化し、シンプルな全結合層を持つニューラルネットワークモデルを設定して訓練します。訓練後、モデルの精度を評価し、いくつかのテスト画像に対する予測結果を視覚的に表示しています。

この記事が気に入ったらサポートをしてみませんか?