Найти тему
2 подписчика

Нейронная сеть для распознавания цифр может быть построена на основе принципа многослойной персептронной нейронной сети (МПНС). Сеть будет состоять из входного слоя, двух скрытых слоёв и выходного слоя. Входной слой будет иметь один нейрон для каждой цифры (десять нейронов в общей сложности). Каждый нейрон будет принимать значение от 0 до 1. Два скрытых слоя будут иметь по десять нейронов. Выходной слой будет иметь десять нейронов, каждый из которых будет представлять собой одну из десяти цифр. Каждый нейрон выходного слоя будет возвращать значение от 0 до 1, представляя собой вероятность того, что входное значение является данной цифрой.


import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# Создание модели
model = Sequential()

# Добавление слоев
model.add(Dense(units=16, activation='relu', input_dim=784))
model.add(Dense(units=10, activation='softmax'))

# Компиляция модели
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])

# Загрузка данных
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Преобразование данных
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255

# Преобразование меток классов в категориальные признаки
from keras.utils import np_utils
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)

# Обучение модели
model.fit(x_train, y_train, epochs=5, batch_size=32)

# Оценка качества модели
score = model.evaluate(x_test, y_test, batch_size=128)
print("\nТочность модели: %.2f%%" % (score[1]*100))
1 минута