Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



perceptron

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: perceptron

Autor: grafnev

22:11:38 16.10.2009

Nevim jake je tve zadani, ale podle toho jak pises to skoro vypada jako bys nevedel co dela perceptron a o co se jedna ...:

- Nejprve se nauci na trenovaci mnozine klasifikovat vstupni vektory (v tomto pripade je vstupni vektor bod) na dve tridy.
- Pak se zafixuji vahy a pusti se do toho ostra mnozina a perceptron ji rozdeli na dve tridy, pokud se spravne naucil.
- Ta primka urcuje hranici, kde na jedne strane je jedna trida vektoru a na druhe strane druha trida vektoru.
- Primka to je pouze pro vektory, ktere maji dve slozky, jinak je to obecne nejaka nadrovina.
- Perceptron konverguje pouze v pripade, ze je vstupni mnozina linearne separovatelna, tzn. ze jde nejakou nadrovinou rozdelit na dve mnoziny. Napr. XOR jednim perceptronem neudelas.
- Spravne nauceny perceptron za podminky, ze je mnozima linearne separovatelna na dimenzi vstupniho vektoru ti spravne klasifikuje 100% bodu.
- Pomoci perceptronu ziskas klasifikator, ktery je schopen rozdelovat pak jakekoliv dalsi vstupni vektory podobne jako trenovaci mnozinu.

Citovat příspěvek

 

Re: perceptron

Autor: timwood

16:19:34 16.10.2009

takze tie vysledne vahy kt. vysli, dosadim na pevno do vztahu kt. polozim rovny nule a z toho potom vyjadrim tu priamku. ano tie body su ulozene v jednotlivych trenovackach ako x a y a potom k nim prisluchajuca trieda.

a teraz vykreslenie tych bodov ktore rozdeluje priamka, ..to mi staci len vykreslit vstupne body trenovacej mnoziny x, y a medzi nich vykreslit tu priamku ? Tie body ktore prisluchaju triedam by nemali prejst perceptronom a az tak ich vykreslit? Ono sa vlastne maju vykreslit vsetky body trenovacej mnoziny, pretoze kazdy bod patri bud do triedy1 alebo triedy2, alebo len tie "vyselektovane" perceptronom?

Lebo z toho by potom vyplyvalo len to, ze pomocu perceptronu jednoducho povedane ziskam len tu priamku ktora rozdeli tie dve triedy (ono to ze ich rozdeli urcite vyplyva z vety o konvergencii perceptronu)..

Citovat příspěvek

 

Re: perceptron

Autor: grafnev

15:17:26 16.10.2009

Hmm, tak tady na to ti tu asi nikdo neodpovi.
Uz si to nepamatuju, takze to ber s rezervou ... podle programu co mas:
- Klasifikujes dvourozmerny vektor.
- Body asi ulozene v trenovacka (treba souradnice x) a trenovacka1 (treba souradnice y)
- V poli trieda mas ulozenou klasifikaci pro kazdy trenovaci bod
- Klasifikace je bud 1 nebo -1
- Gama by se podle terminologie mela jmenovat alfa (aby nedochazelo k omylu)
- w0 je bias(nevzpominam si na cesky termin) - domnivam se, ze to je ono theta
- takze az to cele projedes, tak budes mit nejak nastavene vahy w0, w1, w2
takze w1*x+w2*y+w0=0, takze y=-w1*x/w2 - w0/w2 coz je rovnice primky se sklonem -w1/w2 a posunuta o -w0/w2.
- Pokud bude rozdeleni mozne (mnozina lze rozdelit jednou primkou) tak po vykresleni bys mel mit body z jedne tridy a body z druhe tridy a mezi nima by mela jit takto vypoctena primka.
- Vse je samozrejme napasovano na tvuj pripad, kdy tvuj vstup ma je 2D vektor, proto jsem si dovolil psat x a y.

Citovat příspěvek

 

perceptron

Autor: timwood

19:00:53 15.10.2009

zdravim

Ako najst priamku nadroviny separujucu dve triedy.

[code]
void perceptron( void )
{

int i,j;
float in;

for( j=0; j < 1000; j++ ) {
for( i=0; i < pocet; i++ ) {

in=trenovacka[i]*w1 + trenovacka1[i]*w2 - w0;

if( in>=0 )
{
if( trieda[i] == -1 ){
w1 = w1 - gama*trenovacka[i];
w2 = w2 - gama*trenovacka1[i];
w0 = w0 - gama*(-1);
}
}

if( in < 0 )
{
if( trieda[i] == 1 )
{
w1 = w1 + gama*trenovacka[i];
w2 = w2 + gama*trenovacka1[i];
w0 = w0 + gama*(-1);
}
}
}
}
}
[/code]

ziskam vysledne vahy: w1, w2, w0. A ako za pomoci tychto vah, ziskat rovnicu priamky. Plati, ze rovnicu priamky je mozne ziskat podla vztahu:

suma wj(t)*xj(t) - theta = 0

Ale ako z toho ziskat tu priamku, a tiez ako tam vykreslit tie body klasifikovane do dvoch tried podla tych vah :S

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: