-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathP4_Katarzyna_Giadla.m
98 lines (77 loc) · 2.61 KB
/
P4_Katarzyna_Giadla.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
close all; clear all; clc;
start = [0 1; 0 1; 0 1; 0 1; 0 1;
0 1; 0 1; 0 1; 0 1; 0 1;
0 1; 0 1; 0 1; 0 1; 0 1;
0 1; 0 1; 0 1; 0 1; 0 1;
0 1; 0 1; 0 1; 0 1; 0 1]; %format danych wejściowych
out_s = 25; %ilość wyjść z sieci
net = newff(start, out_s, {'tansig'}, 'trainlm', 'learnh'); %stworzenie prostej sieci
%posługującej się tangesem hiperbolicznym jako funkcją aktywacji, algorytm wstecznej propagacji
in_value = [0 0 0 0;
0 0 1 1;
0 0 0 0;
0 0 1 1;
0 0 0 0;
0 0 0 0;
1 1 0 0;
0 0 0 0;
1 1 0 0;
0 0 0 0;
0 0 1 1;
0 0 1 1;
0 0 1 1;
0 0 1 1;
0 0 1 1;
1 0 0 1;
0 1 0 0;
0 1 1 0;
0 1 0 0;
1 0 0 1;
0 1 0 0;
1 0 0 1;
1 0 0 1;
1 0 1 1;
0 1 0 0];
out_value = [1 0 0 0; % :)
0 1 0 0; % :(
0 0 1 0; % :P
0 0 0 1]; % :D
lp.dr = 0.5; %wsp. zapominania
lp.lr = 0.5; %wsp. uczenia dla wsp. Hebba
wagiHebba = learnh([], in_value, [], [], out_value, [], [], [], [], [], lp, []); %ustalenie wag Hebba
net.trainParam.epochs = 1000; %maks. liczba epok
net.trainParam.goal = 0.001; %błąd średniokwadratowy
net.trainParam.lr = 0.1; %wsp. uczenia algorytmu
net = train(net, in_value, wagiHebba'); %uczenie danych
test_smile = [0;0;0;0;0;
0;1;0;1;0;
0;0;0;0;0;
1;0;0;0;1;5
0;1;1;1;0];
test_sad = [0;0;0;0;0;
0;1;0;1;0;
0;0;0;0;0;
0;1;1;1;0;
1;0;0;0;1];
test_tongue = [0;1;0;1;0;
0;0;0;0;0;
1;1;1;1;1;
0;0;1;0;1;
0;0;0;1;0];
test_bigSmile = [0;1;0;1;0;
0;0;0;0;0;
1;1;1;1;1;
1;0;0;0;1;
0;1;1;1;0];
efektHebba = wagiHebba; %zapisanie pierwotnych współczynników Hebba
efekt = sim(net, in_value); %test sieci
% disp('Współczynniki Hebba: ')
% disp(':) = '), disp(sum(efektHebba(1, ':')));
% disp(':( = '), disp(sum(efektHebba(2, ':')));
% disp(':P = '), disp(sum(efektHebba(3, ':')));
% disp(':D = '), disp(sum(efektHebba(4, ':')));
disp('Działanie algorytmu z wykorzystaniem reguły Hebba: ')
disp(':) = '), disp(sum(efekt(:, 1)));
disp(':( = '), disp(sum(efekt(:, 2)));
disp(':P = '), disp(sum(efekt(:, 3)));
disp(':D = '), disp(sum(efekt(:, 4)));