4

Распознавание рукописного текста (MNIST) – 04

Продолжаем серию уроков распознавания рукописного текста , немного освежим память и пробежимся по коду , посмотрим на то , что мы уже умеем:

#
# импортируем необходимые библиотеки
from tensorflow.keras.datasets import mnist
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

# создаем списки данных , подгружаем из дата сета mnist
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()

# выпрямляем двумерный массив 28*28  на одномерный 784
x_train_re = X_train.reshape(60000, 784)
x_test_re = X_test.reshape(10000, 784)

# нормализуем данные переводяиз 0-255  в 0-1 
x_train = x_train_re.astype('float32')
x_train = x_train / 255
x_test = x_test_re.astype('float32')
x_test = x_test / 255 

# трпнсформируем правильные ответы из базы в формат oneHotEncoding
import tensorflow as tf
y_train = tf.keras.utils.to_categorical(Y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(Y_test, num_classes=10)

Создаем сеть

Работать будем с сетью прямого распространения — Sequential , для этого нам необходимо подгрузить ее из известной нам библиотеки tensorFlow

#

from tensorflow.keras.models import Sequential
model = Sequential()

занесем нашу сеть в переменную model , в дальнейшем будем обращаться к сети с помощью model. Сеть создана. Далее нам нужно создать слои для нашей сети , те самые слои (входные , скрытые , выходные)

в качестве входных параметров могут быть разного рода признаки : вес , рост , возраст , скорость либо другие какие то признаки , и мы можем подать 2 признака так как у нас 2 зеленых нейрона на входе , если будет другое количество зеленых , соответственно будет и другое количество признаков 4 нейрона — 4 признака и т д… И так же мы имеем 2 выходных слоя , которые определяют какой из признаков более подходящий под условия нашей задачи , Синие нейроны все это обрабатывают ,и посылают более сильный сигнал на выход ( красные нейроны) либо кошек , либо собак. Ниже приведен пример.

Приступим к созданию слоев для нашей сетки , будем использовать слои типа — Dense ( полносвязный слой). Имеет несколько необходимых для нас параметров, но сначала код , импортируем наш слой из той же библиотеки TF

#

from tensorflow.keras.layers import Dense
model.add(Dense(800, input_dim=784, activation="relu"))

800 — количество нейронов в слое , input_dim — размер вектора (тот самый полученный одномерный вектор 784) подаваемого на вход, activation=»relu» — функция активации выходного нейрона , некая функция -фильтр

Ну и в завершении построения нашей простейшей сетки , укажем слой с выходными параметрами , так как наших категорий 10 ( 10 рукописных цифр различных вариаций ) то и выходных нейронов будет 10 , это некая замыкающая часть нашей сетки.

#

model.add(Dense(10, activation="softmax"))

и снова добавляем наш тип слоя ( прямого распространения) , но уже с 10 выходными параметрами 0 1 2 3 4 5 6 7 8 9. В этот раз функция активации softmax , которая приведет сумму всех значений выходных нейронов , равной 1 .

В этом уроке мы научились создавать нашу простейшую сетку с 800 нейронами.

Поделиться ссылкой:

3deeper

4 комментария

Добавить комментарий

Ваш адрес email не будет опубликован.