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

16 03 2022 МТ402

16 03 2022 МТ402

by Евгений Вильгаук -
Number of replies: 0

# 1 класс: (1,1),(2,4),(7,18),(12,15)
# 2 класс: (-3,5),(-4,9),(-5,12),(-15,2)
# 3 класс: (7,-3),(14,-18),(3,-22),(7,-13)
# 4 класс: (-1,-1),(-4,-9),(-3,-22),(-12,-15)
points = [1,2,7,12, -3,-4,-5,-15, 7,14,3,7, -1,-4,-3,-12;
1,4,18,15, 5,9,12,2, -3,-18,-22,-13, -1,-9,-22,-15];

for i = 1:3
for j = 1:16
if(i == 3)
H1(i,j) = 1;
else
H1(i,j) = points(i,j);
endif
endfor
endfor

# вынести в функцию
function Y = fillY(H1)
for i = 1:size(H1, 2)
if(H1(1,i) >= 0 && H1(2,i) >= 0)
Y(1,i) = 0;
Y(2,i) = 0;
elseif(H1(1,i) < 0 && H1(2,i) >= 0)
Y(1,i) = 0;
Y(2,i) = 1;
elseif(H1(1,i) >= 0 && H1(2,i) < 0)
Y(1,i) = 0;
Y(2,i) = 0;
elseif(H1(1,i) < 0 && H1(2,i) < 0)
Y(1,i) = 1;
Y(2,i) = 0;
endif
endfor
endfunction

#вынести в softmax
function H2 = softmax(Z2)
N = size(Z2, 2);
sum = zeros(1, N);
for i = 1:N
sum(1,i) = exp(Z2(1,i)) + exp(Z2(2,i));
endfor

for i = 1:2
for j = 1:N
H2(i,j) = exp(Z2(i,j)) / sum(1,j);
endfor
endfor
endfunction

function res = val_J(Y,H2)
res = norm(H2 - Y)^2;
endfunction

function H2 = directPass(H1,W)
Z2 = W * H1;
H2 = softmax(Z2);
endfunction


for i = 1:2
for j = 1:3
W(i,j) = 1;
endfor
endfor

Y = fillY(H1)

H2_1 = directPass(H1,W);
J1 = val_J(Y, H2_1);

delta = 2 * (H2 - Y) .* (H2 .* (1 - H2));

gradient_J = delta * H1';

lambda = 0.01;

W1 = W - lambda * gradient_J;

H2_2 = directPass(H1,W1);
J2 = val_J(Y,H2_2);

disp(W1)
disp(gradient_J)