wget http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/SNNSv4.2.tar.gz wget http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/SNNSv4.2.Manual.pdf
gunzip -c SNNSv4.2.tar.gz | tar xf - cd SNNSv4.2
Uwaga 1: należy poprawić błąd, w wierszu 495 pliku xgui/sources/ui_config.c należy wiersz o postaci:
for (i=0; (i<UI_NO_LEARN_PARAMS+UI_NO_OF_CASCADE_PARAMS); i++){zamienić na:
for (i=0; (i<UI_NO_LEARN_PARAMS+UI_NO_OF_CASCADE_PARAMS) AND (i<noParams) ; i++){
Uwaga 2: na moim Linuksie Ubuntu 5.10 (Breezy Badger) konieczne okazało się ustawienie dodatkowej flagi do kompilacji:
setenv CFLAGS -DMAXFLOAT=HUGETak to wygląda w C-shellu, a jeśli ktoś używa basha to:
CFLAGS=-DMAXFLOAT=HUGE export CFLAGSUstawiamy to sobie w środowisku swojego własnego interpretera poleceń przed wywołaniem ./configure i to się przepropaguje do wszystkich plików konfiguracyjnych.
I już lecimy konfigurację i kompilację:
./configure --with-xNajprostsza konfiguracja przygotowuje pakiet SNNS do instalacji w podkatalogach SNNS. Jeśli ktoś chciałby zrobić instalację systemową, np. dla wielu użytkowników, na serwerze, itp., to powinien użyć również opcji --enable-global która utworzy ścieżki do instalacji w katalogu /usr/local.
make make install
Alternatywnie można ściągnąć i zainstalować gotowe binarne kompilanty dostępne dla: Windowsa, Linuxa, i Suna ze strony:
http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/Executables/
Sprawdzamy, że SNNS się zainstalował wywołując:
xgui &
Cały pakiet SNNS składa się z programu interfejsu graficznego xgui, oraz z szeregu pomocniczych programów znajdujących się w podkatalogu tools:
analyze isnns netlearn snnsbat batchman linknets netperf td_bignet convert2snns mkhead pat_sel feedback-gennet mkout pat_sel_simple ff_bignet mkpat snns2c
Dokumentacja programu SNNS jest przydatnym podręcznikiem, z którego można nauczyć się o budowie wielu rodzajów sieci neuronowych, znaleźć rady i przykłady jak skonfigurować i dobrać parametry funkcji uczących dla tych sieci, jak również (oczywiście) opisuje dokładnie działanie i sposób posługiwania się samym programem.
Dokumentacja ma postać dokumentu w formacie książki, jest dostępna w postaci źródłowej w Latexu, można ją czytać w postaci PDF, można też wydrukować na papierze A4.
Pierwsza sieć: matryca 5x7 do wyświetlania literek i wyjście z sieci je rozpoznaje. Pliki: letters.pat zawiera wzorce a letters.net wyuczoną sieć. Sieć letters3D.net zawiera podobną sieć, ale skonfigurowaną do wyświetlania w trzech wymiarach.
Plik font.pat zawiera 150 wzorców różnych liter (małych i dużych), cyfr, i innych znaków ASCII, w sumie 75 znaków, po dwa wzorce, razem 150 wzorców. Znaki są zapisane w rastrze 24x24, co odpowiada sieci o warstwie wejściowej składającej się z 576 neuronów. SNNS pozwala budować sieci o dowolnym układzie neuronów, więc w tej sieci warstwa wejściowa została zbudowana w układzie 24x24. Po minimalnym przeformatowaniu pliku wzorców możemy te znaki łatwo zobaczyć w pliku font_wp.pat.
Plik font.net zawiera zapis gotowej (wyuczonej) sieci. Można ją załadować do SNNS, a następnie załadować plik wzorców, i następnie posługując się panelem CONTROL:
Możemy wtedy ustawić dowolną funkcję uczącą i jej parametry, trochę uwag na ten temat można znaleźć w pliku font.README.
Obliczenia możemy uruchamiać w trybie wsadowym programem batchman, musimy w tym celu przygotować plik opisu zadania.
To jest oczywiście możliwe tylko jeśli we wzorcach były zarówno wzorce wejściowe jak i wyjściowe.
Przygotowanie wzorców: przydatne obrazki w formacie PBM/PGM/PPM(ASCII), można je utworzyć z obrazków w innych formatach programem xv lub programem convert.
Aby tylko zapisać wyniki dla jakiegoś pliku wzorców, musimy uruchomić przynajmniej jeden cykl obliczeń sieci.
Przykład pokazuje jak można wyuczyć sieć do pewnych typowych obliczeń, na zbiorze danych o pewnych ustalonych rozmiarach, i używać jej do przetwarzania zbiorów danych o innych rozmiarach, tu przetwarzaniu obrazów 2D.
watch.README example of using neural networks for image processing watch.cfg (demonstrates new subpattern processing capability) watch.net watch.pat watch_2out.README advanced example of using neural networks watch_2out.cfg for image processing with sub watch_2out.net watch_2out.pat watch_edge.pgm watch_edge_invert.pgm watch_orig.pgm
Przykład pokazuje uczenie się bez nauczyciela na sieci Kohonena. Sieć Kohonena usiłuje zgrupować wzorce wejściowe w grupy neuronów na płaszczyźnie 2D. W efekcie sieć Kohonena jest samobieżnym, samokonfigurującym się klasyfikatorem, który potrafi czasami inteligentnie pogrupować wzorce wejściowe.
W przykładzie wzorce są punktami w przestrzeni 3D stanowiącymi wierzchołki sześcianu (stąd nazwa przykładu). Sieć Kohonena o tym nie wie, i próbuje pogrupować te punkty na płaszczyźnie 2D.