Нейросеревые модели
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
»горитм Брента BRE, метод половинного деления и кубической интерполяции HYB, алгоритм Чараламбуса CHA и алгоритм перебора с возвратом BAC.
Практические задания.
Задание 1. Адаптировать параметры однослойной статической линейной сети с двумя входами для аппроксимации линейной зависимости вида t = 2 p1 + p2 , выполнив следующие действия:
. С помощью конструктора линейного слоя
net = newlin(PR, s, id, lr),
где PR - массив размера Rx2 минимальных и максимальных значений для R векторов входа; s - число нейронов в слое; id - описание линий задержек на входе слоя; lr - параметр скорости настройки, сформировать линейную сеть:
= newlin([-1 1; -1 1], 1, 0, 0).
. Подготовить обучающие последовательности в виде массивов ячеек, используя зависимости 1 2 t = 2 p + p и четыре пары значений 1 p и 2 p (произвольные):
P = {[-1; 1] [-1/3; 1/4] [1/2; 0] [1/6; 2/3]};= { -1 -5/12 1 1 }.
3. Для группировки представления обучающей последовательности преобразовать массивы ячеек в массивы чисел:
= [P{:}], T1 = [T{:}].
. Выполнить команды net и gensim(net), проанализировать поля вычислительной модели и структурную схему сети и записать в тетрадь значения полей, определяющих процесс настройки параметров сети (весов и смещений):
net.initFcn - функция для задания начальных матриц весов и векторов смещений;
net.initParam - набор параметров для функции initFcn, которые можно определить с помощью команды help(net.initFcn), где nitFcn - заданная функция инициализации: initcon, initlay, initnw,
initnwb, initzero;.adaptFcn - функция адаптации нейронной сети, используемая при вызове метода adapt класса network: adaptwb или trains;
net.adaptParam - параметры функции адаптации, определяемые с помощью команды help(net.adaptFcn);
net.trainFcn - функция обучения нейронной сети, используемая при вызове метода train класса network: trainb, trainbfg, traingbr, trainc, traincgb, traincgt, traincgp, trainngd, traingda, traingdm, traingdx, trainlm, trainoss, trainr, trainrp, trainscg;
net.trainParam - параметры функции обучения, определяемые с помощью команды help(net.trainFcn);
net.performFcn - функция оценки качества обучения, используемая при вызове метода train: mae, mse, msereg, sse;
net.performParam - параметры функции оценки качества обучения, определяемые с помощью команды help(net.performFcn);
net.layers{1}.initFcn - функция инициализации параметров слоя: initnw, initwb;
net.layers{1}.transferFcn - функция активации, которая для линейного слоя должна быть purelin;
net.layers{1}.netInputFcn - функция накопления для слоя: netprod, netsum;
net.biases{1}.initFcn - функция инициализации вектора смещений: initcon, initzero, rands;
net.biases{1}.lean - индикатор настройки: 0 - с помощью метода adapt, 1 - с помощью метода train;
net.biases{1}.learnFcn - функция настройки вектора смещений: learncon, learngd, learngdm, learnnp, learnwh;
net.biases{1}.learnParam - параметры функции настройки, определяемые с помощью команды help.(net.biases{1}.learnFcn);
net.inputWeights{1, 1}.initFcn - функция инициализации весов входа: initzero, midpoint, randnc, randnr, rands;
net.inputWeights{1,1}.learn - индикатор настройки: 0 - с помощью метода adapt, 1 - с помощью метода train;
net.inputWeights{1,1}.learnFcn - функция настройки весов: learngd, learngdm, learnhd, learnis, learnk, learnlv1, learnlv2, learnos, learnnp, learnpn, learnsom, learnnwh;
net.inputWeights{1,1}.learnParam - параметры функции настройки, определяемые с помощью команды help(net.inputWeights {1,1}.learnParam);
net.inputWeights{1,1}.weightFcn - функция для вычисления взвешенных входов для слоя: dist, dotprod, mandist,negdist, normprod;
для многослойных сетей параметры net.inputWeights{i,j}, связанные с обучением такие, как initFcn, learn, learnFcn, learnParam, weightFcn, имеют тот же смысл и могут принимать такие же значения, что и соответствующие параметры для net.inputWeights{1,1}.
. Выполнить один цикл адаптации сети с нулевым параметром скорости настройки:
[net1, a, e,] = adapt(net, P, T,);.IW{1,1} % - матрица весов после адаптации;% - четыре значения выхода;% - четыре значения ошибки.
6. Инициализировать нулями веса входов и смещений и задать параметры скорости настройки для них соответственно 0.2 и 0:
net.IW{1} = [0 0];.b{1} = 0;.inputWeights{1,1}.learnParm.lr = 0.2;.biases{1}.learnParam.lr =0.
Нулевое значение параметра скорости настройки для смещения обусловлено тем, что заданная зависимость 1 2 t = 2 p + p не имеет постоянной составляющей.
. Выполнить один цикл адаптации с заданным значением параметра скорости адаптации:
[net1, a, e] = adapt (net, P, T);.IW{1,1} % - значения весов в сети net1 изменились;% - четыре значения выхода сети net1;% - четыре значения ошибки сети net1.
8. Выполнить адаптацию сети net с помощью 30 циклов:
for i = 1:30,
[net, a{i}, e{i}] = adapt(net, P, T);(i, :) = net.IW{1,1};;mat(a{30}) % - значения выхода на последнем цикле;mat(e{30}) % - значение ошибки на последнем цикле;(30, :) % - веса после 30 циклов;(cell2mat(e{30}) % - функция ошибок: 0.0017176.
Здесь cell2mat - функция преобразования массива числовых ячеек в массив чисел, а mse - функция среднеквадратичной ошибки.
. Построить графики зависимости значений выходов сети и весовых коэффициентов, а также среднеквадратичной ошибки от числа циклов, используя функцию subplot для деления экрана на окна: subplot(3,1,1)
for i = 1:1:30, plot(i, cell2mat(a{i}), ?k?),on;(??), ylabel(?Выходы a(i)?)(3,1,2)(0:30, [[0 0]; W], ?k?)(??), ylabel(?Веса входов W(i) ?)(3,1,3)i = 1:30, E(i) = mse(e{i}); end(1:30, E, ?+k?)(?Циклы?), ylabel(?Ошибка?), grid
10. Адаптировать рассматриваемую модель статической сети для аппроксимации той же зависимости и с теми же требованиями к погрешности, используя групповой способ представления обучающей последовательности:
0.0017176">P = [-1 -1/3 1/2 1/6; 1 1/4 0 2/3];= [-1 -5/12 1 1];= newlin([-1 1; -1 1], 1, 0, 0, 0.2);= IW{1} = [0 0]; % - присваива