@k0matozzz

Как уменьшить ошибку обучения нейросети?

Доброго времени суток. Пишу бакалаврскую работу по распознаванию с использованием нейросетей. Использую neural network toolbox. Программа должна распознавать квадратики и кружочки Вот код:
close all, clear all, clc;
warning off;
 
% Загрузка данных
 
 
load images
 
 
[R,Q] = size(images);
[S2,Q] = size(targets);
 
% Предобработка
 
 
[images_pp,meanA,stdA] = prestd(images);
 
P = images;
T = targets;
 
pause
 
% Создание сети
 
 
 
S1 = 25; 
net = newff(minmax(P),[S1 S2],{'tansig' 'logsig'},'traingdx');
net = init(net);
 
% Обучение 
 
 
net.performFcn = 'sse';        % Sum-Squared Error performance function
net.trainParam.goal = 1e0;     % Sum-squared error goal.
net.trainParam.show = 20;      % Frequency of progress displays (in epochs).
net.trainParam.epochs = 1000;  % Maximum number of epochs to train.
net.trainParam.mc = 0.95;      % Momentum constant.
net.trainParam.lr = 0.01;
 
pause
 
 
[net,tr] = train(net,P,T);
 
O = sim(net,P);
C = full(compet(O));
 
Error = sse(C-T)/(2*Q)
 
figure
imagesc(O)
figure
imagesc(C)
 
pause


Проблема в том, что ошибка обучения всегда очень большая от 25% до 50%. Изменение количества нейронов в скрытом слое не помогает. Данные для обучения загружаю из заранее приготовленного .mat файла. В images хранятся изображения в полутонах в виде столбцов. Первые 10 - круги, остальные - квадраты. В targets - целевые значения. 1 - круг, 2 - квадрат, 3 - что-то другое. Прогу делал из готового примера по распознаванию символов. Подскажите пожалуйста, где я не прав и как исправить можно? Заранее очень благодарен!
  • Вопрос задан
  • 3207 просмотров
Пригласить эксперта
Ответы на вопрос 1
@k0matozzz Автор вопроса
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы