How to Use the MNIST Dataset in Python

09/12/2021

Contents

In this article, you will learn how to use the MNIST dataset in Python.

Python MNIST Dataset

The MNIST dataset is a well-known dataset of handwritten digits and is commonly used for training image classification models in machine learning. It consists of 60,000 training images and 10,000 test images of 28×28 grayscale images of digits ranging from 0 to 9. Here’s how you can use the MNIST dataset in Python:

Download the dataset

You can download the MNIST dataset from the website of the National Institute of Standards and Technology (NIST). You can also use the tensorflow library to directly download the dataset, which will be automatically divided into the training and test sets.

Load the dataset

After downloading the dataset, you need to load it into your Python environment. You can use the numpy library to load the data as arrays. Here’s an example:

import numpy as np

# Load the MNIST dataset
(x_train, y_train), (x_test, y_test) = np.load('mnist.npz', allow_pickle=True)
Preprocess the data

Before you can use the dataset to train a machine learning model, you need to preprocess the data. This typically involves normalizing the pixel values of the images and converting the target labels into one-hot encodings. Here’s an example:

import tensorflow as tf

# Normalize the pixel values
x_train, x_test = x_train / 255.0, x_test / 255.0

# Convert target labels to one-hot encodings
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
Train a machine learning model

After preprocessing the data, you can use it to train a machine learning model. You can use any machine learning library or framework to train a model, but in this example, we’ll use tensorflow and keras to train a simple convolutional neural network (CNN) model:

model = tf.keras.models.Sequential([
    tf.keras.layers.Reshape((28 * 28,), input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
Evaluate the model

After training the model, you can evaluate its performance on the test set. Here’s an example:

test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test Accuracy: ', test_acc)

This is a basic example of how you can use the MNIST dataset in Python to train a machine learning model. You can experiment with different architectures, optimization algorithms, and hyperparameters to improve the performance of the model.