Продолжаем серию уроков распознавания рукописного текста , немного освежим память и пробежимся по коду , посмотрим на то , что мы уже умеем:
# # импортируем необходимые библиотеки 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 нейронами.
Great content! Super high-quality! Keep it up! 🙂
Incredible, this is a good webpage.
I like this site — its so usefull and helpfull.
Great looking website. Presume you did a great deal of your own html coding.