Привет! Я пытаюсь сделать программу прогнозирования с использованием нейронных сетей. Функция обучения, которую я использую, — это байесовская регуляризация.
Результаты довольно хорошие, но когда я вижу производительность, я замечаю, что ошибка обучения уменьшилась, а тестовые значения — нет.
На самом деле, когда я тестирую сеть с дополнительными новыми значениями, результаты довольно ужасны. Я считаю, что это произошло потому, что сеть стала переоснащенной.
Мой вопрос: как я могу предотвратить переоснащение функции «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 и ОТВЕТЫ с помощью
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ