Форум для обсуждения курса

МТ-402 05.03.21

МТ-402 05.03.21

yazan Артем Маковецкий -
Yanıt sayısı: 0

p1 = [0,0];
p2 = [-1,-2];
p3 = [3,3];
p4 = [5,4];

p_test = [1, 1];

y1=0;
y2=0;
y3=1;
y4=1;

function s = scal_prod(a,b)
result = 0;
for i=1:length(a)
result += a(i)*b(i);
endfor
s=result;
endfunction

function h = perc_out(w, h1)
z2 = w*h1;
for i=1:4
h(i) = sigma(z2(i));
endfor
endfunction

function v = func_val(w, h1, y)
h2 = perc_out(w, h1);
v = 0.0;
for i=1:4
v += (h2(i)-y(i))*(h2(i)-y(i));
endfor
endfunction

function gr = grad(w, h1, y)
gradient = [];
delta = [];
for j=1:4
arg = scal_prod(w,h1(:,j))-y(j);
delta(j) = sigma(arg)*sigma(arg)*(1-sigma(arg));
endfor
for i=1:3
gradient(i) = scal_prod(delta, h1(i,:));
endfor
gr = gradient;
endfunction

function w_res = grad_desc(steps, lambda, w, h1, y)
w_temp = w;
w_next = w;
for i=1:steps
w_next = w_temp - lambda * grad(w_temp, h1, y);
w_temp = w_next;
endfor
w_res = w_next;
endfunction

function s = sigma(x)
s = (1/(1+exp(-x)));
endfunction

N=4;

delta = [];

y = [y1,y2,y3,y4];

disp(y');

w11 = 1;
w12 = 1;
w13 = 1;

w = [w11, w12, w13];
h11 = [p1(1),p1(2),1];
h12 = [p2(1),p2(2),1];
h13 = [p3(1),p3(2),1];
h14 = [p4(1),p4(2),1];
h1_test = [p_test(1), p_test(2), 1]';

h1 = [h11',h12',h13',h14']

for j=1:N
arg = scal_prod(w,h1(:,j))-y(j);
delta(j) = sigma(arg)*sigma(arg)*(1-sigma(arg));
endfor

s = sigma(-5);

z21 = (w*h1)';
disp(z21);

z21_test = (w*h1_test)';

h21 = [sigma(z21(1)), sigma(z21(2)), sigma(z21(3)), sigma(z21(4))]';
disp(h21);

h21_test = [sigma(z21_test)];
if h21_test <= 0.5
output = -1;
else
output = 1;
endif
disp(output);

gradient = [];
for i=1:3
gradient(i) = scal_prod(delta, h1(i,:));
endfor
disp(gradient);

w1 = w - 1*gradient

h2 = perc_out(w, h1);
v1 = func_val(w, h1, y)

h2 = perc_out(w1, h1);
v2 = func_val(w1, h1, y)

w2 = grad_desc(15, 0.8, w, h1, y);
v3 = func_val(w2, h1, y)