Sieci Neuronowe - rownanie kwadratowe

Odpowiedz Nowy wątek
2006-08-25 23:39
JahU
0

Witam! Proboje napisac programik na zasadzie sieci neuronowych, ktory mialby mi wyliczac pierwiastki rownania kwadratowego. Na wejsciu sypie mu wartosci parametrow A B i C (rownanie), a na wyjsciu chce miec dwa pierwiastki tego rownania. Uzywam liniowej funkcji aktywacji. Dla wzorcowych danych:

a=1
b=1
c=-2
x1=-2
x2=1

programik w klikuset iteracjach wyznacza idealne wagi. Jednak gdy uzyje tych wag dla innych wzorcowych danych - kicha... w czym robie blad?

aha, dodam jeszcze ze siec jest dwu warstwowa (nie ma warstwy ukrytej)

Pozostało 580 znaków

2006-08-26 00:16
Dr.Czepialski
0
JahU napisał(a)

aha, dodam jeszcze ze siec jest dwu warstwowa (nie ma warstwy ukrytej)

Więc czy jest ciekawa?
Ma ktoś ciekawy przykład 2 warstwowej sieci która robi coś sensownego?

Pozostało 580 znaków

2006-08-26 00:45
JahU
0

no wlasnie....wiec moj problem wyglada juz zupelnie inaczej :/ czy jest ktos w stanie mi wylozyc w sposob zrozumialy i na chlopski rozum, jak bedzie wygladal algorytm uczenia sieci WIELOwarstwowej (wsteczna propagacja bledow -> niestety moja wiedza z matematyki nie jest w stanie na razie ogarnac tych wszystkich wzorow na obliczanie wag na poszczegolnych neuronach... :( dlatego prosze o pomoc w wytlumaczeniu nauki wielowarstowej sieci :(

Pozostało 580 znaków

2006-08-26 08:36
0

Jakie jest model neuronu? Perceptron? A może zmień funkcję aktywacji (np sigmoidalna unipolarna)? W ogóle... po co chcesz rozwiązać równanie kwadratowe za pomocą sieci nauronowych? :)


Pozostało 580 znaków

2006-08-26 09:05
JahU
0

hehe w celach edukcayjnych :P model neuronu to percepton. a czy jesli nie zmienie na funcje sigma to nie bedzie tak, ze na wyjsciu bedzie mogl byc tylko wynik <-1;1> ?

Pozostało 580 znaków

2006-08-26 09:10
0

to zalezy jaki ustawisz wspolczynnik uczenia. jezeli wysoki to fakt, funkcja ciagla przejdzie w funkcje skokowa, ale jak ustawisz maly (np 0.6 - ale to juz kwestia testów) to bedzie nadal ciagla.


Pozostało 580 znaków

2006-08-26 12:00
JahU
0

na razie zostaje przy liniowej, napisalem 3 warstwowa i jakos poradzilem sobie z uczeniem...nie czaje jeszcze tylko jednej rzeczy :/ jak wyliczyc blad calej sieci (tzn po jednej epoce) :/ bo bez tego ani rusz :/ wiesz ktos moze jak sie wylicza ten blad? nazywa to sie bodajze fachoweo ERMS !! POMOCY :/

Pozostało 580 znaków

2006-08-26 12:45
0

tak, całkowyty błąd sieci możesz wyliczyć np tak:

for (i=0;i<WYJ_MAX;i++)
     b += (_wyjscie[i]-w_wyj[i].wyj)*(_wyjscie[i]-w_wyj[i].wyj);
blad_sieci = sqrt(b/(double)(LICZBA_WZORCOW*WYJ_MAX));

WYJ_MAX - wyjścia sieci
_wyjscie[] - tablica wyjść
_w_wyj[].wyj - wyjście danego neuronu w warstwie wyjściowej
LICZBA_WZORCOW - liczba wzorcow uczących :)


Pozostało 580 znaków

2006-08-26 12:55
JahU
0

hmm...a moglbys zamiescic implementacje w Delphi? bo za bardzo nie rozumiem co tam robi to "double"

Pozostało 580 znaków

2006-08-26 15:26
0

heh...

for i:=0 to i<WYJ_MAX do
     b:= b+ (_wyjscie[i]-w_wyj[i].wyj)*(_wyjscie[i]-w_wyj[i].wyj);
blad_sieci:= sqrt(b/(LICZBA_WZORCOW*WYJ_MAX));

Pozostało 580 znaków

2006-08-26 17:13
JahU
0

hehe juz do tego sam doszedlem :P krotki kurs C i juz wszystko jasne :D wielkie dzieki za pomoc, w razie jeszcze jakis problemow wiem kogo szukac :) THX

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0