Časť 1 - Backpropagation
Počet bodov: 15
Cieľom tejto časti projektu je rozoznávať písaný text pomocou obyčajnej doprednej neurónovej siete. Samotná sieť má mať viac vrstiev, pričom vstupná vrstva má rozmery MxN neurónov, kde M a N sú prirodzené čísla. Počet skrytých vrstiev a ich štruktúru si zvoľte sami. Pri odovzdávaní ale treba nejakým spôsobom zdovodniť, prečo ste si vybrali práve takú štruktúru. Taktiež si zvolte spôsob, akým budete posudzovať správnosť výstupu. Môžete zvoliť buď jednu sieť, ktorá bude mať toľko výstupných neurónov, koľko bude rozoznávaných znakov, prípadne môžete pre každý znak vytvoriť úplne samostatnú sieť, ktorá bude vycvičená len a len naň.
Aktivačnú funkciu si zvolte sami. Váhy majú byť na začiatok nastavené na malú nenulovú hodnotu, ktorá nemusí byť nutne náhodná. Neuróny majú mať na začiatku náhodný malý prah.
Vstup pre celý program treba prečítať zo súboru s nasledujúcou štruktúrou:
Prvý riadok vstupného súboru obsahuje štyri prirodzené čísla oddelené medzerou M, N, A a B. M a N sú rozmery jedného znaku, kde M je počet riadkov a N je počet stĺpcov. A je počet znakov, ktoré majú slúžiť na učenie neurónových sietí a B je počet znakov, ktoré treba rozoznávať.
Ďalej nasleduje A sekcií, z ktorých každá začína riadkom, na ktorom je jeden znak a ďalej nasleduje M riadkov po N stĺpcoch zložených len z jednotiek a núl. To je bitmapa daného znaku, pričom 0 znamená pozadie a 1 znamená zafarbený pixel.
Ďalej nasleduje B sekcií, z ktorých každá začína riadkom, na ktorom je jeden otáznik a ďalej nasleduje M riadkov po N stĺpcoch zložených len z jednotiek a núl. To je bitmapa znakú, ktorý treba rozoznať.
Okrem samotného zdrojového kódu treba odovzdať aj slovný popis funkcie programu aspoň na pol strany A4 a graf chybovej funkcie počas učenia.