test_images = test_images / 255.0
Далее мы можем определить модель нейронной сети. В данном примере мы будем использовать нейронную сеть с тремя сверточными слоями, после каждого из которых применяется слой подвыборки (max pooling), и двумя полносвязными слоями. Выходной слой будет состоять из 10 нейронов, соответствующих классам цифр, и функцией активации softmax.
model = keras.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.Flatten(),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Затем мы можем скомпилировать модель, задав функцию потерь, оптимизатор и метрики для оценки качества модели.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
После этого мы можем запустить процесс обучения, передав в модель данные для обучения и тестирования и указав количество эпох (итераций) и размер батча (количество примеров, обрабатываемых за одну итерацию).
model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_data=(test_images, test_labels))
Наконец, мы можем оценить качество модели на тестовых данных.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy)
Результатом обучения нейросети для распознавания цифр на изображениях будет модель, которая способна принимать на вход изображение с рукописной цифрой и предсказывать, какая цифра на изображении изображена.
Этот код позволяет обучить нейросеть для распознавания объектов на изображениях, а именно для классификации изображений из набора CIFAR-10. Обученная нейросеть может быть использована для распознавания объектов на других изображениях, которые не были использованы в обучающей выборке. Для этого достаточно подать изображение на вход нейросети и получить ответ в виде вероятности принадлежности к каждому из классов.
Для проверки точности модели можно использовать тестовый набор изображений с известными метками (т.е. правильными ответами) и сравнивать предсказания модели с этими метками. Чем выше точность модели на тестовых данных, тем более успешно она справляется с задачей распознавания цифр.
После обучения модели ее можно использовать для распознавания цифр на новых изображениях, например, в приложении для считывания рукописных цифр на почтовых индексах, на банковских чеках или в других сферах, где требуется автоматическое распознавание цифр.
Для реализации второго примера в среде TensorFlow нам понадобится набор данных CIFAR-10, который можно загрузить с помощью встроенной функции TensorFlow.
Набор CIFAR-10 содержит 60000 цветных изображений размером 32х32 пикселя, разделенных на 10 классов. Для обучения нейросети мы будем использовать 50000 изображений, а для тестирования – оставшиеся 10000.
Вот как выглядит реализация второго примера в TensorFlow:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# Определение архитектуры нейросети
model СКАЧАТЬ