Привет! Я пытаюсь сделать программу прогнозирования с использованием нейронных сетей. Функция обучения, которую я использую, — это байесовская регуляризация.

Результаты довольно хорошие, но когда я вижу производительность, я замечаю, что ошибка обучения уменьшилась, а тестовые значения — нет.

На самом деле, когда я тестирую сеть с дополнительными новыми значениями, результаты довольно ужасны. Я считаю, что это произошло потому, что сеть стала переоснащенной.

Мой вопрос: как я могу предотвратить переоснащение функции «trainbr»? Каждый раз, когда я обучаю сеть, погрешность значений, заданных для тестирования, не уменьшается.

inputs = tonndata(x,false,false);
targets = tonndata(t,false,false);
net = feedforwardnet([15,13],'trainbr');
net.trainParam.lr = 0.05; 
net.trainParam.mc = 0.9; 
net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'};
net.divideFcn = 'dividerand';  
net.divideMode = 'time'; 
net.divideParam.trainRatio = 85/100;
net.divideParam.valRatio = 0/100;
net.divideParam.testRatio = 15/100;
net.layers{1}.transferFcn = 'logsig';
net.layers{2}.transferFcn = 'logsig';
net.performFcn = 'mse';
net = train(net,inputs,targets);
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Лучший подход к регрессии — начать с FITNET, используя как можно больше значений по умолчанию. Топология узла I-H-O по умолчанию содержит Nw = (I+1)*H+(H+1)*O неизвестных весов. Ntrn обучающих примеров дает Ntrneq = Ntrn*O обучающих уравнений с Ntrndof = Ntrneq-Nw обучающих степеней свободы. Средняя дисперсия в примерах обучающих целей равна MSEtrn00 = mean(var(target)). Получение среднеквадратичной ошибки ниже, чем MSEtrngoal = 0,01*Ntrndof*MSEtrn00a/Ntrneq для Ntrndof > 0 приводит к нормализованной DOF-скорректированной MSE NMSEtrna ‹= 0,01 и соответствующему скорректированному обучению Rsquared R2trna = 1-NMSEtrna ›= 0,99. Это интерпретируется как успешное моделирование не менее 99% вариации цели.

Цель обучения — попытаться минимизировать H с ограничением R2trna ›=0,99. Обычно это достигается путем проб и ошибок в двойном цикле for с внешним циклом значений-кандидатов скрытых узлов h = Hmin:dH:Hmax и внутренним циклом i = 1:Ntrials со случайными инициализациями веса. Я опубликовал много, много примеров. Поиск NEWSGROUP и ОТВЕТЫ с помощью

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ