Ragnor Opublikowano 9 Stycznia 2006 Zgłoś Opublikowano 9 Stycznia 2006 (edytowane) Akurat jeszczen nie z rodzimej uczelnie ;), na razie na Uniwerku Wrocławskim na informatyce jestem ale teraz zastanawiam się aby wziąźć drugi kierunke i pójść na Politechnike na automatyke i robotyke (z tego co wiem wrzucą mnie na 4 semestra i mase rzeczy przepiszą) , zawsze przyda się spojrzec na problem z innego punktu widzenia, a troche praktyki i techniki nie zaszkodz a jak widzę też ciekawymi rzeczami się tam zajmujecie :). U mnie sieć miała 784 neurony warstwy wejściowej, 10 wyjsciowej i opcjalnie od 10 do 200 warstwy ukrytej (testowałem rbf, glm, mlp) i jeśli tylko nie nie zabrakło ramu to dla 500 próbek treningowych (po około 50 na jedną cyfre) i przy około 20-30 iteracjach uczących trenowanie zajmowało max około 2-4 minut. Edytowane 9 Stycznia 2006 przez Ragnor Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 9 Stycznia 2006 Zgłoś Opublikowano 9 Stycznia 2006 no to nieźle..musiałbym sprawdzić moją sieć kiedyś stosujac więcej wzorców. Ale w warstwie ukrytej aż 200 neuronów? u mnie przy 8 było widac oznaki uczenia.. ale szybko zapominała... przy 15 chyba chodziła już spoko. Na AiR też chciałem iść gdybym sienie dostał na infe... słyszełm ze koelsie sie robotami bawią.. (co mnie też akurat interesuje :D - z resztą.. a co mnie nie .. interesuje :P ) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ragnor Opublikowano 9 Stycznia 2006 Zgłoś Opublikowano 9 Stycznia 2006 No własnie też bym sobie jakieś robociki porobił a nie tylk ow teorii siedział, wkońcu wypadało by jakoś zdobytą wiedze w praktyce zastosować a na AiR będę mieć chyba okazje :). Do 200 neuronów w warstwie ukrytej to dochodziłem tyko przy testowaniu sieci RBF (ale ta z racji zastosowania standardowej miary odległosci do wyznaczania odległosci próbki od poszczególnych neronów przy przestrzeni 784 wymiarowej wywalała sie kompletnie, musialem do okolo 60 wymiarów-cech zredukować próbki za pomoca PCA), dla sieci MLP to miałem około 20-30 w warstwie ukrytej. Wogóle probiłem kilkadziesąt skryptów bo testowałem około 100 róznych konfiguracji sieci (rodzaj, ilośc iteracji treningowych, funkcje aktywacji, algorytmy itd). Co do jakościrozpoznawania to na próbce treningowej było 100% poprawności a na testowej (1000 innych próbek) dochodziłem do 88% (więc tak sobie) ale gdy brałem 5000 próbek treningowych to jakość dochodziła do około 93%, więc już troche lepiej, ale uczenie już troche trwało :). Co do danych były to obrazki 28x28 pikseli i wartośc każdego piksela (przedział 0-255) była jedną cechą na wejściu, rozdzielczośc niezbyt duża, ale przy zastosowaniu obrazków około 56x56 trenowanie trwałoooo i trawłoooo :D. Jakie miałeś wyniki na swojej sieci? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
remiq88 Opublikowano 19 Marca 2007 Zgłoś Opublikowano 19 Marca 2007 Nie chciałem tworzyć nowego tematu, więc podpinam się pod ten. Ja z kolei musze napisać w c++ program deszyfrujący alfabet morse'a, czyli z tablicy char zapisanej kropkami i kreskami mam uzyskać litery. Nie mam pojęcia jak to rozwiązać. Czy ktoś mógłby pomóc? Z góry bardzo dziękuję. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 19 Marca 2007 Zgłoś Opublikowano 19 Marca 2007 (edytowane) zaczynasz od void main() { } dalej już z górki... Panie, czego nie wiesz jak rozwiązać? Pisząc porgramy nie trzeba być magikiem, wystarczy zdroworozsądkowo logicznie myśleć... Masz tablicę w wzorcami tak? Niech one będą dla uproszczenia umieszczone w kolejności alfabetycznej. Tablica ta ze swej natury musi być 2 wymiarowa: . _ _... _._. tu masz po kolei umieszczone panie znaki abc. teraz to co dostajesz to jest tablica znaków zawierająca zakodowane słowo w morsie, że tak powiem... więc np: _... _... _._. no więc panie zadanie jest banalne, program komputerowy sprawdza i dekoduje podobnie jak robią to ludzie, nieznający morse'a. zatem czytają pierwszy ciąg znaków do spacji... czyli uzyskują _..., następnie przeszukują tablicę konwersji i znajdują że jest to 2 znak w tablicy (indeks i=1), a więc B... piszesz printf("%ls",65+i ) i masz na ekranie literkę B... idąc tak dalej wychodzi że zakodowany tekst to BBC Oczywiście te rozważania mają się nijak do pisania programów, jeśli nie znasz języka.. Zresztą, skoro już piszesz w C++, to może lepiej zamiast prymitywnych tablic użyć vector<string>. wtedy sprawdzenie tego jest jeszcze prostsze. Lecisz po wszystkich elementach vectora (taka ulepszona tablica) w której sa stringi zawierające kody morse'a i porównujesz je wprost za pomocą operatora == z tym co odczytałeś z kodu wejściowego. Nie wiem czy stringi STLowe posiadają jakąś przydatną funkcyję, ale np mfc-owa klasa CString posiada mtodę Tokenize(), która sama parsuje stringa jaki w niej jest np do pierwszej spacji i zwraca ten kawałek... To Twój program można napisać (nie licząć inicjalizacji słownika) w dosłownie 5 linijkach Edytowane 19 Marca 2007 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Haquim Opublikowano 20 Marca 2007 Zgłoś Opublikowano 20 Marca 2007 (edytowane) Oczywiście że jest proste i efektywne , choć niewydajne rozwiązanie. Jeśli ciągi znaków reprezentujące poszczególne symbole zostały rozdzielone spacjami.Bardziej wydajną metodą w takim przypadku będzie wykorzystanie tablicy haszujące kody nie są za długie więc spokojnie można je zakodować jako liczby w systemie trójkowym gdzie • - 1 — -2 czyli hash(A)=hash(• — )=1+2*3=7 hash(L)=hash( • — • •)1+2*3+1*3^2+1*3^3=43 czas wyszukiwania przy zastosowaniu haszy będzie wtedy stały ,natomiast wyliczenie hasza zależy od długości ciągu reprezentującego pojedyńczy symbol. No a jeśli w STLu jest tablica haszująca to super . Jeśli natomiast nie są rozdzielne to zaczyna się robić ciekawie : Alfabet_Morse'a A to • — L to • — • • a U to • • — E to • •• —• • - UEE lub EAEE lub EL . Edytowane 20 Marca 2007 przez Haquim Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 22 Marca 2007 Zgłoś Opublikowano 22 Marca 2007 nie mogą nie być rozdzielone bo to nie ma sensu :).. to tak jakby akzać wordowisprawddzićczytocoterazpiszęmasens :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
remiq88 Opublikowano 24 Marca 2007 Zgłoś Opublikowano 24 Marca 2007 Dzięki wszystkim za odpowiedzi, ale udało mi się w końcu wpaść na jakiś pomysł i napisałem po swojemu. Ale i tak dzięki! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...