Обучаем нейронную сеть

В простых случаях, когда не требуется высокая точность пользуются нейронной сетью со стандартными параметрами. Единственным необходимым явно задаваемым значением является число нейронов в скрытом слое.

Инициализация сети:

net = newff(learn_array(1:900,:),learn_array(901:904,:),6);

Здесь первый аргумент - обучающая выборка, второй - метки, третий - число нейронов.

Обучение:

net = train(net,learn_array(1:900,:),learn_array(901:904,:));

Здесь первый аргумент - сама сеть, которая обучается, второй - обучающая выборка, третий - метки классов.

Вылезет окошечко обучения, в конце можно закрыть его.

Всё. Сеть обучена.

Проверяем сеть

Снова рисуем любую цифру из этих четырёх, сохраняем в виде такой же картинки 30х30.

Загружаем картинку:

test_image = imread('test.bmp');

Преобразуем к столбцу:

test_col = reshape(test_image,[],1);

Распознаём:

result = sim(net,test_col)

здесь sim() - функция симуляции работы сети.

В результате получил:

и картинка была такой:

По результату видим, что максимальное значение - второе (0.8599), что соответствует цифре два. Таким образом, можно сказать, что ИНС обучена корректно и работает как нужно. (заработала как нужно с третьего раза, печаль-беда)

Для повышения точности распознавания нужна большая обучающая выборка (а не по 5 штук на класс), и картинки необходимо масштабировать таким образом, чтобы все цифры были одинаковых размеров.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: