Основные возможности пакета Neural Networks из состава MATLAB. Аппроксимирующие свойства искусственных нейронных сетей.
Кафедра №106 МАИ
Группа 01-214 Студент: Шубин В.С.
Информатика 2
Лабораторная работа №4
Основные возможности пакета Neural Networks из состава MATLAB. Аппроксимирующие свойства искусственных нейронных сетей.
Вариант №18
1. Построить график функции при x[-2,2]:
Должны присутствовать сетка, обозначения по осям, заголовок, «легенда».
M - файл
function y=fun(x)
if x<=0
y=(1+x)/((1+x^2)^(3/2));
elseif x>=1
y=abs(2-x)^(1/3);
else
y=-x+2*exp(-2*x);
end
k=1;
for x=-2:0.1:2;
y=fun(x);
y1(k)=y;
x1(k)=x;
k=k+1;
end
plot(x1,y1),grid;
ylabel('y');
xlabel('x');
legend('fun');
title('Plot of')
print -dtiff fig3.tif
2. Построить нейросеть прямого распространения с одним скрытым слоем, обучаемую представлению функции y=f(x) из п.1 спомощью метода обратного распространения ошибки. Число нейронов в скрытом слое – 10, для обучения сети использовать метод Левенберга-Маркварда, число эпох в процессе обучения – 500, задачник(обучающий набор) строится для всей области определения функции y=f(x) с шагом Δх=0,2
k=1;
for x=-2:0.2:2
y=fun(x)
x2(k)=x;
y2(k)=y;
k=k+1;
end
P=x2;
T=y2;
net=newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm'
net.trainParam.epochs=500;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o');
grid on;
xlabel('x');
ylabel('y');
legend('fun4_1','net');
title('function for job 4, var 18 task 2');
print -dtiff fig4_12net.tif
3. Проверить обучающие свойства нейросети, полученной в п.2, путем расчета с помощью обученной сети последовательности значений функций y=f(x) для аргументов, не содержащихся в задачнике (x0+0.1, x1+0.1,…)
P = x1;
T = y1;
net = newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn = 'trainlm';
net.trainParam.epochs = 500;
net = train(net,P,T);
Y = sim(net,P);
plot(P,T,P,Y,'o');
grid on;
hold on;
PT=-2:0.2:2;
YT = sim(net,PT);
plot(PT,YT,'*');
grid on;
hold on;
legend('fun','net','test');
title('Plot of function for Job 4, Variant 18, Task 3');
print -dtiff fig4-3.jpeg
4. Исследовать влияние составных элементов процесса обучения искусственной нейронной сети на скорость обучения и точность получаемого представления функции число эпох(100,500,1000); размер задачника(Δх=0.5,0.2,0.1); метод обучения(tringd-градиентный спуск, trincdf-алгоритм Флетчера-Ривса, trainlm-алгоритм Левенберга-Марквардта). Влияние числа эпох смотреть при Δх=0.2, алгоритм обучения trainlm; влияние размера задачника – для числа эпох 50, алгоритм обучения; влияние метода обучения – для числа эпох 50, при Δх=0.2.
1). Влияние числа эпох:
Число эпох равно 100
net=newff([-2,2],[10 1],{'tansig' 'purelin'}); net.trainFcn='trainlm';
net.trainParam.epochs=100;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o'), grid
xlabel('x');
ylabel('y');
legend('net 100')
print -dtiff fig4_12net100.tif
Число эпох равно 500
net=newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm'
net.trainParam.epochs=500;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o');
grid on;
xlabel('x');
ylabel('y');
legend('net 500');
print -dtiff fig4_12net500.tif
Число эпох равно 1000
net=newff([-2,2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=1000;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'*'), grid
xlabel('x');
ylabel('y');
legend('net 1000')
print -dtiff fig4_12net1000.tif
Влияние размера задачника
net 0.1 - DX=0.1
net 0.2 - DX=0.2
net 0.5 - DX=0.5
k=1;
for x=-2:0.5:2;
y=fun(x);
x3(k)=x;
y3(k)=y;
k=k+1;
end
P1=x1;
P2=x2;
P3=x3;
T1=y1;
T2=y2;
T3=y3;
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P1,T1);
Y1=sim(net,P1);
net=train(net,P2,T2);
Y2=sim(net,P2);
net=train(net,P3,T3);
Y3=sim(net,P3);
plot(x1,y1,P1,Y1,'o',P2,Y2,'x',P3,Y3,'*'),grid
xlabel('x');
ylabel('y');
legend('func4_12','net 0.1','net 0.2','net 0.5')
title('function for job 4 var 18 task 4(2)');
print -dtiff fig4_12task4_2.tif
Влияние метода обучения
Net one – один скрытый слой
Net two – два скрытых слоя
net=newff([-2,2],[5 3 1],{'tansig' 'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P2,T2);
Y=sim(net,P2);
plot(x1,y1,P2,Y2,'o',P2,Y,'x'),grid
xlabel('x');
ylabel('y');
title('function for job 4 var 18 task 5(3)');
legend('func4_12','net one','net two')
print -dtiff fig4_12task5_3.tif
3). Влияние числа нейронов в скрытом слое:
Net 1 – один нейрон
Net 2 – два нейрона
Net 5 – пять нейронов
Net 20 – двадцать нейронов
net=newff([-2,2],[1 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P2,T2);
Y51=sim(net,P2);
net=newff([-2,2],[2 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P2,T2);
Y52=sim(net,P2);
net=newff([-2,2],[5 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P2,T2);
Y55=sim(net,P2);
net=newff([-2,2],[20 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P2,T2);
Y520=sim(net,P2);
plot(x1,y1,P2,Y51,'o',P2,Y52,'x',P2,Y55,'*',P2,Y520,'^'),grid
xlabel('x');
ylabel('y');
title('function for job 4 var 18 task 5(2)');
legend('fun4_12','net 1','net 2','net 5','net 20');
print -dtiff fig4_12task5_2.tif
Кафедра №106 МАИ
Группа 01-214 Студент: Шубин В.С.
Информатика 2
Лабораторная работа №4
Основные возможности пакета Neural Networks из состава MATLAB. Аппроксимирующие свойства искусственных нейронных сетей.
Вариант №18
1. Построить график функции при x[-2,2]:
Должны присутствовать сетка, обозначения по осям, заголовок, «легенда».
M - файл
function y=fun(x)
if x<=0
y=(1+x)/((1+x^2)^(3/2));
elseif x>=1
y=abs(2-x)^(1/3);
else
y=-x+2*exp(-2*x);
end
k=1;
for x=-2:0.1:2;
y=fun(x);
y1(k)=y;
x1(k)=x;
k=k+1;
end
plot(x1,y1),grid;
ylabel('y');
xlabel('x');
legend('fun');
title('Plot of')
print -dtiff fig3.tif
2. Построить нейросеть прямого распространения с одним скрытым слоем, обучаемую представлению функции y=f(x) из п.1 спомощью метода обратного распространения ошибки. Число нейронов в скрытом слое – 10, для обучения сети использовать метод Левенберга-Маркварда, число эпох в процессе обучения – 500, задачник(обучающий набор) строится для всей области определения функции y=f(x) с шагом Δх=0,2
k=1;
for x=-2:0.2:2
y=fun(x)
x2(k)=x;
y2(k)=y;
k=k+1;
end
P=x2;
T=y2;
net=newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm'
net.trainParam.epochs=500;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o');
grid on;
xlabel('x');
ylabel('y');
legend('fun4_1','net');
title('function for job 4, var 18 task 2');
print -dtiff fig4_12net.tif
3. Проверить обучающие свойства нейросети, полученной в п.2, путем расчета с помощью обученной сети последовательности значений функций y=f(x) для аргументов, не содержащихся в задачнике (x0+0.1, x1+0.1,…)
P = x1;
T = y1;
net = newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn = 'trainlm';
net.trainParam.epochs = 500;
net = train(net,P,T);
Y = sim(net,P);
plot(P,T,P,Y,'o');
grid on;
hold on;
PT=-2:0.2:2;
YT = sim(net,PT);
plot(PT,YT,'*');
grid on;
hold on;
legend('fun','net','test');
title('Plot of function for Job 4, Variant 18, Task 3');
print -dtiff fig4-3.jpeg
4. Исследовать влияние составных элементов процесса обучения искусственной нейронной сети на скорость обучения и точность получаемого представления функции число эпох(100,500,1000); размер задачника(Δх=0.5,0.2,0.1); метод обучения(tringd-градиентный спуск, trincdf-алгоритм Флетчера-Ривса, trainlm-алгоритм Левенберга-Марквардта). Влияние числа эпох смотреть при Δх=0.2, алгоритм обучения trainlm; влияние размера задачника – для числа эпох 50, алгоритм обучения; влияние метода обучения – для числа эпох 50, при Δх=0.2.
1). Влияние числа эпох:
Число эпох равно 100
net=newff([-2,2],[10 1],{'tansig' 'purelin'}); net.trainFcn='trainlm';
net.trainParam.epochs=100;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o'), grid
xlabel('x');
ylabel('y');
legend('net 100')
print -dtiff fig4_12net100.tif
Число эпох равно 500
net=newff([-2 2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm'
net.trainParam.epochs=500;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'o');
grid on;
xlabel('x');
ylabel('y');
legend('net 500');
print -dtiff fig4_12net500.tif
Число эпох равно 1000
net=newff([-2,2],[10 1],{'tansig' 'purelin'});
net.trainFcn='trainlm';
net.trainParam.epochs=1000;
net=train(net,P,T);
Y=sim(net,P);
plot(P,T,P,Y,'*'), grid
xlabel('x');
ylabel('y');
legend('net 1000')
print -dtiff fig4_12net1000.tif
Влияние размера задачника
net 0.1 - DX=0.1
net 0.2 - DX=0.2
net 0.5 - DX=0.5
k=1;
for x=-2:0.5:2;
y=fun(x);
x3(k)=x;
y3(k)=y;
k=k+1;
end
P1=x1;
P2=x2;
P3=x3;
T1=y1;
T2=y2;
T3=y3;
net.trainFcn='trainlm';
net.trainParam.epochs=500;
net=train(net,P1,T1);
Y1=sim(net,P1);
net=train(net,P2,T2);
Y2=sim(net,P2);
net=train(net,P3,T3);
Y3=sim(net,P3);
plot(x1,y1,P1,Y1,'o',P2,Y2,'x',P3,Y3,'*'),grid
xlabel('x');
ylabel('y');
legend('func4_12','net 0.1','net 0.2','net 0.5')
title('function for job 4 var 18 task 4(2)');
print -dtiff fig4_12task4_2.tif
Влияние метода обучения