На этом шаге мы протестируем сеть на полном наборе данных.
Далее мы добавим в нашу основную программу новый код, разработанный для тестирования эффективности сети.
При этом потребуется изменить имена файлов, поскольку теперь они должны указывать на полный набор тренировочных данных, насчитывающий 60 тысяч записей, и набор тестовых данных, насчитывающий 10 тысяч записей. Ранее мы сохранили эти наборы в файлах с именами mnist_train.csv и mnist_ test.csv. Нам предстоит серьезная работа!
В соответствии с результатами обучения нашей простой трехслойной нейронной сети с использованием полного набора, включающего 60 тысяч примеров, и последующего тестирования на 10 тысячах записей показатель общей эффективности сети составляет 0,9435. Это очень неплохо. Точность распознавания составила почти 95%!
Рис.1. Полученные показатели эффективности
Этот показатель, равный почти 95%, можно сравнить с аналогичными результатами эталонных тестов, которые можно найти по адресу http://yann.lecun.com/exdb/mnist/. Вы увидите, что в некоторых случаях наши результаты даже лучше эталонных и почти сравнимы с приведенными на указанном сайте результатами для простейшей нейронной сети, эффективность которой составила 95,3%.
Это вовсе не так плохо. Мы должны быть довольны тем, что наша первая попытка продемонстрировала эффективность на уровне нейронной сети профессиональных исследователей.
Кстати, вас не должно удивлять, что даже в случае современных быстродействующих домашних компьютеров обработка всех 60 тысяч тренировочных примеров, для каждого из которых необходимо вычислить распространение сигналов от 784 входных узлов через сто скрытых узлов в прямом направлении, а также обратное распространение ошибок и обновление весов, занимает ощутимое время.
На используемом компьютере (достаточно старом) прохождение всего тренировочного цикла заняло около восьми минут. Для вашего компьютера длительность вычислений может быть иной.
На следующем шаге мы займемся настройкой коэффициентов обучения.