Распознавание цифр с использованием набора данных MNIST с использованием функции активации Softmax и ReLu

MNIST: модифицированная база данных Национального института стандартов и технологий. База данных MNIST представляет собой набор данных из 60 000 маленьких квадратных оттенков серого с размером 28x28 с изображением рукописных цифр от 0 до 9, наш девиз - классифицировать ввод цифр в блокноте для рисования интерфейса Gradio.

  • MNIST широко используется для классификации цифр, и точность варьируется от 99% ± 0,2–0,4%, ниже приведен пример, показывающий график для набора данных MNIST.
  • Это показывает, что изображения, используемые в тренировочном наборе, размером 28x28 пикселей сведены в одномерный вектор размером 784 пикселя. Каждый из 784 пикселей, составляющих изображение, хранится как значение от 0 до 255.
  • Это определяет оттенки серого пикселя, так как наши изображения представлены только в черно-белом цвете. Таким образом, черный пиксель представлен 255, а белый пиксель — 0, с различными оттенками серого где-то посередине.

ПРИМЕР ДЛЯ ГРАФИКА НАБОРА ДАННЫХ MNIST

from keras.datasets import mnist
from matplotlib import pyplot
# load dataset
(trainX, trainy), (testX, testy) = mnist.load_data()
# summarize loaded dataset
print('Train: X=%s, y=%s' % (trainX.shape, trainy.shape))
print('Test: X=%s, y=%s' % (testX.shape, testy.shape))
# plot first few images
for i in range(9):
	# define subplot
	pyplot.subplot(330 + 1 + i)
	# plot raw pixel data
	pyplot.imshow(trainX[i], cmap=pyplot.get_cmap('gray'))
# show the figure
pyplot.show()

Импортируйте зависимости для модели, т. е. Tensorflow и Gradio (Gradio позволяет быстро создавать настраиваемые компоненты пользовательского интерфейса на основе моделей TensorFlow или PyTorch)

import tensorflow as tf
import gradio as gr

Нормализация данных

(x_train, y_train),(x_test, y_test)= tf.keras.datasets.mnist.load_data()
x_train = x_train/ 255.0,
x_test = x_test/ 255.0

ПЕРЕД НАЧАЛОМ МОДЕЛИРОВАНИЯ И ПРОГРАММИРОВАНИЯ ДАВАЙТЕ ПОСМОТРИМ, КАКИЕ ВСЕ ФУНКЦИИ АКТИВАЦИИ МЫ ИСПОЛЬЗУЕМ В МОДЕЛИ

ReLU (выпрямленная линейная единица): ReLU обозначает выпрямленную линейную единицу и представляет собой тип функции активации. Математически это определяется как

𝑓(𝑥)=𝑚𝑎𝑥(0,𝑥)f(x)=max(0,x)

Визуально это выглядит следующим образом:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-10, 10, 1000)
y = np.maximum(0, x)

plt.figure(figsize=(10, 5))
plt.plot(x, y)
plt.legend(['Relu'])
plt.show()

ФУНКЦИЯ СОФТМАКС

Это замечательная функция активации, которая превращает числа, также известные как логиты, в вероятности, сумма которых равна единице. Функция Softmax выводит вектор, представляющий распределения вероятностей списка потенциальных результатов.

Функция softmax — это еще один тип AF, используемый в нейронных сетях для вычисления распределения вероятностей по вектору действительных чисел. Эта функция генерирует выходные данные, которые находятся в диапазоне значений от 0 до 1, а сумма вероятностей равна 1. Функция softmax представлена ​​​​следующим образом:

Обучите модель

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape =(28,28)),
    tf.keras.layers.Dense(128,activation ='relu'),
    tf.keras.layers.Dense(10,activation = 'softmax')])
model.compile(optimizer ='adam', loss ='sparse_categorical_crossentropy',
              metrics = ['accuracy'])
model.fit(x_train,y_train, validation_data = (x_test, y_test), epochs = 10)

Создание графического интерфейса с помощью Gradio

def classify (image):
    prediction = model.predict(image).tolist()[0]
    return {str(i): prediction [i] for i in range (10)}
sketchpad = gr.inputs.Sketchpad()
label = gr.outputs.Label(num_top_classes = 3)
interface = gr.Interface(classify, sketchpad, label, live =True,
                        capture_session = True)

Теперь запустите интерфейс

interface.launch()
Output: Running locally at: http://127.0.0.1:7860/

Вы можете получить коды с https://github.com/abhi647/Handwriting-recognition

Или вы можете запустить код в Google Colab со страницы: https://colab.research.google.com/drive/1tt782iD87wdv6mDOVffGQ5HfQm6QC121?usp=sharing