Vieno sluoksnio neuronų tinklas

Norint įgyvendinti vieno sluoksnio neuroninį tinklą, turiu dvi duomenų rinkmenas.

 In: 0.832 64.643 0.818 78.843 Out: 0 0 1 0 0 1 

Pirmiau pateiktas formatas yra 2 duomenų failai.

Galutinis rezultatas: "1 konkrečiai klasei, kuriai priklauso atitinkamas įėjimas, ir" 0 kitiems 2 išėjimams.

Problema yra tokia:

Vieno sluoksnio neuroninis tinklas ras A (3 iki 2) ir b (3 iki 1 vektoriaus) Y = A * X + b, kur Y yra [C1, C2, C3] ', o X yra [x1, x2] „.

Norėdami išspręsti šią problemą naudojant neuroninį tinklą, galime perrašyti lygtį: Y = A '* X', kur A '= [A b] (3 matrica 3), ir X' - [x1, x2, 1] '

Dabar galite naudoti neuroninį tinklą, turintį tris įvesties mazgus (atitinkamai x1, x2 ir 1) ir tris išėjimus (C1, C2, C3).

Gautas 9 (kadangi mes turime 9 jungtis tarp 3 įėjimų ir 3 išėjimų) svoriai bus lygiaverčiai matricos A 'elementams.

Iš esmės, aš bandau daryti kažką panašaus, bet jis neveikia:

 function neuralNetwork load X_Q2.data load T_Q2.data x = X_Q2(:,1); y = X_Q2(:,2); learningrate = 0.2; max_iteration = 50; % initialize parameters count = length(x); weights = rand(1,3); % creates a 1-by-3 array with random weights globalerror = 0; iter = 0; while globalerror ~= 0  iter <= max_iteration iter = iter + 1; globalerror = 0; for p = 1:count output = calculateOutput(weights,x(p),y(p)); localerror = T_Q2(p) - output weights(1)= weights(1) + learningrate *localerror*x(p); weights(2)= weights(1) + learningrate *localerror*y(p); weights(3)= weights(1) + learningrate *localerror; globalerror = globalerror + (localerror*localerror); end end 

Rašau šią funkciją kitame faile ir jį vadinu ankstesniame kode.

 function result = calculateOutput (weights, x, y) s = x * weights(1) + y * weights(2) + weights(3); if s >= 0 result = 1; else result = -1; end 
-73
11 авг. nustatė user414981 11 rug . 2010-08-11 09:02 '10 at 9:02 am 2010-08-11 09:02
ответ 1 atsakymas

Galiu aptikti kelias su kodu susijusias problemas. Pagrindinė problema yra ta, kad tikslas yra kelių klasių (ne dvejetainis ), taigi jums reikia naudoti 3 išvesties mazgus, po vieną kiekvienai klasei (vadinama 1-N-kodavimu ), arba naudoti vieną išvesties mazgą su kita aktyvinimo funkcija kažkas gali būti daugiau nei tik dvejetainis išvestis - 1/1 arba 0/1)

Toliau pateiktame sprendime perceptronas turi tokią struktūrą:

2019

222
11 авг. atsakymas suteiktas Amro 11 rug. 2010-08-11 15:07 '10, 15:07, 2010-08-11 15:07

Žr. Kitus klausimus apie ženklus kiekvienoje arba Užduoti klausimą