-
# 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
-
-
# вынести в функцию
-
for i = 1:16
-
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
-
-
for i = 1:2
-
for j = 1:3
-
W(i,j) = 1;
-
endfor
-
endfor
-
-
Z2 = W * H1;
-
-
-
#вынести в softmax
-
sum = zeros(1,16);
-
for i = 1:16
-
sum(1,i) = exp(Z2(1,i)) + exp(Z2(2,i));
-
endfor
-
-
for i = 1:2
-
for j = 1:16
-
H2(i,j) = exp(Z2(i,j)) / sum(1,j);
-
endfor
-
endfor
-
-
-
#
-
J = norm(H2 - Y)^2;
-
delta = 2*(H2 - Y) .* (H2 .* (1 - H2));
-
-
qradient_J = delta * H1';
-
-
lambda = 0.1;
-
-
W1 = W - lambda * gradient_J;