Skocz do zawartości

Tworzenie SIECI NEURONOWEJ na - Raspberry Pi


admunt1

Pomocna odpowiedź

Myślę, że tworzenie sieci neuronowej jest jak najbardziej możliwe. Może poszukać bibliotek w C++. Nie jest konieczny Matlab. Co prawda można używać go do generacji kodu C dla danej platformy (niekoniecznie PC). Podobnie Labview. Można nim programować Rio.

Link do komentarza
Share on other sites

Nie lepiej już użyć matlaba na PC i eksportować gotową sieć na RPi, albo i lepiej - zrobić sobie komunikację RPI <> PC i obciążyć obliczeniami PCta? Generalnie sieć można zaimplementować wszędzie. Ja swego czasu (gdzieś na forbocie jest mój projekt) implementowałem sieć na mikrokontrolerze dsPIC30F z tym, że proces uczenia był przeprowadzany na PC (w zależności od wielkości zbioru danych potrafił trwać nawet kilka minut). Np. obecnie robię implementacje na karcie graficznej, co daje mi możliwość symulacji nawet do miliona połączeń synaptycznych. Obawiam się, że z RPi nie osiągniesz dużej wydajności. Jednak wszystko się rozbija o problem, który masz. Jeżeli chcesz rozwiązać zadanie omijania przeszkód, to spokojnie ten mikrokomputer wystarczy nawet, aby w każdym cyklu użyć np. propagacji wstecznej do nauki sieci. Jest wiele bibliotek pod C++, nie musi być to odrazu Matlab 🙂

@deshipu, nie zgodzę się, że sieci neuronowe mają mało zastosowań.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@deshipu, nie zgodzę się, że sieci neuronowe mają mało zastosowań.

A gdzie jeszcze widzisz zastosowanie poza rozpoznawaniem obrazu i dźwięku? Wszędzie gdzie się da napisać algorytm na piechotę, to będzie on lepszy.

Pomijając przykłady, które podałeś: robot omijający przeszkody (ogólnie symulacja zachowań), ogólnie zadania rozpoznawania i klasyfikacji, przetwarzanie sygnałów, automatyka (jako np. model systemu czy układ sterujący), pamięć i jeszcze wiele wiele innych zastosowań. Szczególnie, jeżeli weźmiemy pod uwagę modele zbliżone do biologiczynch.

Link do komentarza
Share on other sites

A może użyć jakiejś biblioteki na C++ do sieci neuronowych. Kiedyś miałem na C#. Jedną z nich jest AForge.NET. Były tam zaimplementowane tworzenie sieci, metody uczenia, symulacja. Sieć można nauczyć faktycznie na PC, co prawda jak jest RAM 1GB na RPi to powinno starczyć nawet do uczenia. Stosowanie pakietów obliczeniowych typu Matlab tzn. aby je normalnie zainstalować wymaga wydajnej maszyny - i chyba niepotrzebnie jeśli przedmiotem projektu jest tylko sieć neuronowa. Co prawda Matlab może tworzyć sam kod C, który można by skompilować pod Rpi - ale nie wszystko pójdzie.

Ja znalazłem coś takiego http://opennn.cimne.com/ . Ale nie testowałem.

[ Dodano: 21-12-2015, 17:03 ]

@deshipu, nie zgodzę się, że sieci neuronowe mają mało zastosowań.

A gdzie jeszcze widzisz zastosowanie poza rozpoznawaniem obrazu i dźwięku? Wszędzie gdzie się da napisać algorytm na piechotę, to będzie on lepszy.

Np. regulatory rozmyte - sterowanie adaptacyjne

Link do komentarza
Share on other sites

Jeżeli autor zbuduje sobie sieć jednokierunkową, złożoną z kilku warstw i wykorzysta algorytm propagacji wstecznej, to to spokojnie powinno pójść nawet na mikrokontrolerze, nie obawiałbym się o wydajność tego na RPi.

Może warto po prostu sprawdzić któreś rozwiązania? Np. google podpowiada to.

A masz może pod ręką jakiś przykład układu omijania przeszkód opartego na sieci neuronowej, który byłby pod jakimkolwiek względem lepszy od zaprogramowanego ręcznie?

Zależy co masz na myśli, przez 'zaprogramowany ręczie'. Rzucę dla przykładu mój robot. Jeżeli 'ręcznie' znaczy zaprogramować poszczególne zakresy poprzez warunki if-else, to uważam, że ann jest lepsza - 'naturalniej' uczymy robota działania. Wystarczy dodać algorytm uczący i możemy uczyć naszego robota, bez potrzeby przeprogramowywania go za każdym razem.

Link do komentarza
Share on other sites

Zależy co masz na myśli, przez 'zaprogramowany ręczie'.

Mam na myśli porządny algorytm napisany przez ludzkiego programistę po gruntownym przemyśleniu i przeanalizowaniu problemu.

Rzucę dla przykładu mój robot. Jeżeli 'ręcznie' znaczy zaprogramować poszczególne zakresy poprzez warunki if-else, to uważam, że ann jest lepsza - 'naturalniej' uczymy robota działania. Wystarczy dodać algorytm uczący i możemy uczyć naszego robota, bez potrzeby przeprogramowywania go za każdym razem.

Chyba żartujesz. Przecież takie omijanie przeszkód zrobisz "na piechotę" w kilkudziesięciu liniach kodu bez specjalnego wysiłku, a jak sięgniesz po istniejące algorytmy SLAM, to możesz mieć praktycznie optymalne znajdowanie drogi z tymi sensorami. Bez konieczności uczenia dla konkretnego układu przeszkód.

Zgadzam się, że z akademickiego punktu widzenia fakt, że robot "sam" (ale też nie do końca, bo w końcu go do tego zaprogramowałeś) się uczy jest bardzo ciekawe, ale w praktyce jak chcesz rozwiązać konkretny problem, to ciężko pobić kod napisany przez człowieka. Wyjątkiem są oczywiście takie rzeczy jak analiza obrazu czy innych sygnałów -- ale i tutaj istnieją algorytmy, które dają w konkretnych przypadkach dużo lepsze rezultaty niż sieć neuronowa.

[N]ie mogę tutaj umieścić żadnych schematów, wzorów, dokładnych opisów, spisu elementów, kodu programu - proszę nawet o to nie pytać.

Bez komentarza.

Link do komentarza
Share on other sites

Są problemy dobrze zdefiniowane i wówczas korzystanie z metod sztucznej inteligencji nie ma wówczas sensu. Ale ostatnio korzystałem z sieci neuronowej do prognozowania wielkości na podstawie danych historycznych oraz innych wielkości współzależnych. Wówczas nie musisz dokładnie znać nawet najbardziej zawiłej zależności. Sieć na podstawie danych się jej nauczy. Wiele regulatorów ją wykorzystuje a użytkownicy nawet nie są tego świadomi.

[ Dodano: 22-12-2015, 08:47 ]

Są problemy dobrze zdefiniowane i wówczas korzystanie z metod sztucznej inteligencji nie ma wówczas sensu. Ale ostatnio korzystałem z sieci neuronowej do prognozowania wielkości na podstawie danych historycznych oraz innych wielkości współzależnych. Wówczas nie musisz dokładnie znać nawet najbardziej zawiłej zależności. Sieć na podstawie danych się jej nauczy. Wiele regulatorów ją wykorzystuje a użytkownicy nawet nie są tego świadomi.

Podobnie z algorytmami genetycznymi/ewolucyjnymi. Jeśli mamy dobrą metodę do rozwiązania zadania optymalizacji (np. funkcja celu jest różniczkowalna) to stosujemy klasyczne metody np. najszybszego spadku. W bardziej skomplikowanych (a takie są w technice) musimy wykorzystać inne np. algorytmy ewolucyjne, symulowane wyżarzanie lub hybrydowe

Link do komentarza
Share on other sites

Może warto po prostu sprawdzić któreś rozwiązania? Np. google podpowiada to.

Sprawdzę Fast Artificial Neural Network. Wymyślę jakieś zadanie i zrealizuję na RPi. Dam znać co wyszło. Jeśli chodzi o środowiska Matlab, Scilab, Octave to ogromne środowiska w których zaimplementowano wiele bibliotek obliczeniowo-symulacyjnych lecz standardowo kod jest interpretowany - zatem wykonywany nie najszybciej.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.