ння згортальне мережі доводиться виконувати складний прорахунок і перебір індексів, що ускладнює реалізацію. Надбудова у вигляді класів дозволяє вирішити цю проблему, зберігши прийнятний рівень швидкодії, за рахунок використання механізму покажчиків.
До складу модуля ConvolutionNetwork.h входять наступні класи:
Класи для подання нейронів:
· Neuron - похідний абстрактний клас уявлення нейрона.
· NeuronN - клас для представлення простого нейрона повнозв'язкову шару.
· NeuronS - клас для представлення нейрона шару підвибірки.
· NeuronC - клас для представлення нейрона шару згортки.
Класи для подання карт ознак:
· MapFeatures - похідний абстрактний клас уявлення карти ознак.
· MapFeaturesS - клас для представлення карти ознак шару підвибірки.
· MapFeaturesC - клас для представлення карти ознак шару згортки.
Клас управління набором навчальних даних:
· TrainingSamples - служить для формування, додавання, видалення і видачі навчальних вибірок.
Даний набір класів дозволяє легко конструювати мережу з довільною кількістю шарів і нейронів у них. Для цього сущетвует основний клас ConvolutionalNeuralNetwork, який являє собою модель нейронної мережі з можливістю функціонування, налаштування і навчання.
Для роботи з нейронною мережею, з усіх програм досить створити екземпляр класу ConvolutionalNeuralNetwork. Далі викликати метод Initialize () для ініціалізації мережі. Після ініціалізації можна виконати завантаження стану мережі за допомогою методу LoadNetwork () або призвести навчання, після чого можна використовувати мережу для роботи.
2.4 Тестування і результати роботи
У рамках даної роботи було проведено тестування згортальне мережі для визначення статі людини. Обчислення проводилися на процесорі Intel® Core ™ 2 Duo CPU 2.20 GHz. Для навчання використовувалося близько 1000 різних фотографій, також близько 100 тестових зображень.
Час виконання однієї епохи? 25 секунд.
Навчання проводилося з різним коефіцієнтом швидкості ћ.
Значення ћ=0.1 виявилося велике, процес навчання не сходить, мережа скачками заходила в локальні мінімуми і знову виходила на підйом поверхні помилок (малюнок 9).
Малюнок 9. Графіки навчання при ћ=0.1 (зверху - графік зміни глобальної похибки, знизу - графік зміни відсотка успішного розпізнавання)
При зменшенні значення ћ до 0.05 збіжність мережі покращилася, але ближче до кінця навчання стрибкоподібне зміна не дозволяло досягти прийнятного стабільного результату (малюнок 10).
Малюнок 10. Графіки навчання при ћ=0.05 (зверху - графік зміни глобальної похибки, знизу - графік зміни відсотка успішного розпізнавання)
Експериментальним шляхом було підібрати найоптимальніше значення ћ=0.01. Дане значення коефіцієнта забезпечує прийнятну швидкість збіжності і плавний спуск по поверхні помилок (малюнок 11). Процес навчання зійшовся за 19 епох до найкращого результату 94 відсотка правильно розпізнаних фотографій на тестовому множині. Подальше навчання не привело до поліпшення результату. Тому стан мережі на кінець дев'ятнадцятого епохи було збережено як результуюче.
Малюнок 11. Графіки навчання при ћ=0.01 (зверху - графік зміни глобальної похибки, знизу - графік зміни відсотка успішного розпізнавання)
Вживалися також спроби поступового зменшення значення ћ в ході навчання, але це не дало кращого результату. Спочатку значення кроку вибиралося великим, щоб швидко звести помилку до малих значень, потім поступово зменшувалася, для більш точної збіжності. З графіка на малюнку 12 видно швидкий спуск, і потім плавну зміну. ??
Малюнок 12. Графіки навчання при поступово мінливому кроці ћ (зверху - графік зміни глобальної похибки, знизу - графік зміни відсотка успішного розпізнавання)
Навчена мережу з 100 тестових зображень помилилася тільки на 6-ти. На всіх 6-ти зображеннях представлені жінки (малюнок 13).
Малюнок 13. Вхідні зображення, на яких мережа дала помилку
Великий інтерес при аналізі результатів представили карти ознак, які мережу будує в процесі розпізнавання. Карти ознак першого шару мережі були розміщені в матрицях розміром 13х13 і містили значення в діапазоні [0,1]. Дані значення були перетворені до інтервалу [0,255] (значення палітри формату BMP 8 біт град...