Программа разбита на 3 модуля.
network.py
Модуль для обучения модели нейронной сети и сохранения ее состояния по умолчанию в файле model.h5. Модель нейросети содержит в себе 784 значения на входном слою, три внутренних слоя, с функциями активации 'Relu' на первых двух, 'Softmax' на третьем, и дропаут в качестве функции регуляризации. В завершающем слою содержится 10 нейронов, каждый из которых отождествляет собой один из классов принадлежности.
Запускается из консоли с целью обучения модели нейросети командой python network.py без параметров.
data.py
Модуль для работы с данными, загрузкой их из встроенной библиотеки mnist, имортирование изображений и перевод в числовой вид, формирования confusion matrix, сохранения результатов работы модели в формате json и отображения изображений в числовом и графическом представлении.
main.py
Модуль, содержащий скрипт для работы с предварительно обученной моделью нейросети.
Если скрипт запускается без параметров командной строки, в качестве тестовых данных будут браться стандартные данные из модуля mnist.
python main.py
Если скрипту был передан аргумент в командной строке, то данное значение будет использоваться им в качестве директории, в которой хранятся изображения для тестирования. Подразумевается, что данная директория находится в одном месте с данным модулем, а названия изображений начинаются с той цифры, которая изображена на картинке и имеют расширение png
python main.py data
В обоих случаях результаты будут сохранены в файле data.json, а на экран будет выведена confusion matrix. Для получения последнего необходимо наличие хотя бы 10 изображений.