logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sieci neuronowe i procesory sygnałowe DSP

rafe 31 Sty 2006 13:33 2998 3
REKLAMA
  • #1 2241069
    rafe
    Poziom 10  
    Cześć.
    Czy na procesorach sygnałowych da się zaimplementować sieć neuronową?. Z tego co się orientuję procesory sygnałowe DSP (np:ADSP 21065L) maja kilkakrotnie zwiększoną szybkość obliczeniową i można by było w jakiś sposób to wykorzystać w sieciach neuronowych. Tylko jak ??.
    Sieć neuronowa miała by np: na podstawie symptomów pacjentów określać przynależność chorego do określonego zbioru jakieś choroby.
    Jest dużo różnych algorytmów sieci neuronowych, składających się z okreslonej liczby neuronów. Czym więcej neuronów tym sieć naogół wykonuje się dłużej. Jednak po zaimplementowaniu określonej sieci na procesor DSP czas oczekiwania na wyniki znacznie by się skrócił.
    Mam pewien pomysł jak wykorzystać procesor sygnałowy DSP do obliczeń ale nie wiem czy dobrze myślę :). Dany algorytm i potrzebne dane można by było załadować na procesor z PC a obliczenia wykonywał by już procesor DSP. Wyniki obliczeń były by wyprowadzane z powrotem na monitor komputera PC.
    Byłbym wdzięczny gdyby ktoś podzielił się swoimi pomysłami zamplementowania sieci neuronowych na procesory DSP albo wogóle na jakieś "kości" czy na jakieś inne rozwiązania hardwarowe(sprzętowe).
    A może ktoś robił podobne projekty?

    Dziękuję za wszystkie odpowiedzi. Pozdrawiam. Cześć.
  • REKLAMA
  • #2 2243615
    And!
    Admin grupy Projektowanie
    W przypadku klasycznych struktur sieci neuronowych po ich wyuczeniu,
    otrzymasz współczynniki wag na danym neuronie.
    Najbardziej kosztowne jest uczenie sieci, jej funkcjonowanie już znacznie mniej.

    DSP da akceleracje mnożenia (oraz akumulaci mnożeń) i ew bardziej specyficzne cechy w zależności od modelu.

    Przy dużej sieci mnożeń będzie sporo, teoretycznie jedna warstwa nauczy się wszytkiego ale musi być odpowiednio duża.
    Przy kolejnych warstwach dojdzie jeszcze więcej mnożeń.

    W zależności od wymaganych szybkości reakcji musisz zadecydować czy wystarczy CISC lub RISC ew ARM czy też DSP. Duże znaczenie ma też z jakimi procesorami pracowałeś do tej pory.

    W każdym razie raczej nie prześcigniesz obliczeń na procesorze PC (np 2GH) dodatkowo dochodzą spore wymagania co do pamięci jeżeli struktura będzie duża, także przesyłanie z PC do DSP (przynajmniej takiego o rozsądnej cenie) niema sensu.
  • REKLAMA
  • #3 2243770
    rafe
    Poziom 10  
    cześć.
    Miałem do czynienia z procesorem (ADSP 21065L), który rozwiązywał rówanie różniczkowe 10rzędu. Na początku program był pisany w VisualDSP a następnie po napisaniu symulowany na komputerze PC.
    Po około 3min. uzyskałem rozwiązanie równań różniczkowych. Natomiast po zaimplementowaniu tego samego programu na ADSP czekałem na wyniki kilka sekund :). Program wykorzystywał metodę Rungego-Kutty do rozwiązania równań różniczkowych.
    Mi chodziło właśne o uczenie sieci wg. jakiegoś algorytmu na DSP a potem przesłaniu gotowych wag do PC i tam odpaleniu już gotowej sieci z jej współczynnikami wagowymi.
    Sądze że są jakieś sprzętowe rozwiąznania realizujące algorytmy sieci neuronowych tylko sęk w tym że niewiem dokońca jakie :(.

    W każdym razie dzięki za odpowiedź. Pomyślę jeszcze coś na temat CISC lub RISC może to wystarczy :).

    Pozdrawiam serdecznie :).
  • #4 2288865
    marek_Łódź
    Poziom 36  
    rafe napisał:
    Tylko jak ??.


    Tak, jak już napisano gdzie indziej zaimplementować SN daje się praktycznie na wszystkim, co potrafi liczyć. Pierwszy etap to zebranie danych do uczenia sieci, dalej wygenerowanie, nauczenie i przetestowanie sieci (najlepiej jakimś dedykowanym programem, który wspomaga zarówno przy konfigurowaniu SN, jak i liczy współczynniki).

    Mając wygenerowaną sieć kolejna decyzja to platforma sprzętowa (powiedzmy DSP) i narzędzia softwarowe (optymalnie byłoby w ASM, niemniej prościej będzie w jakimś języku wyższego poziomu tym bardziej, że sieć można mieć gotową np. w C). Dalej sama implementacja - trzeba podjąć dodatkowe decyzje dotyczące np. liczenia funkcji wzbudzeń neuronów (tak to się nazywa??). W przypadku korzystania z funkcji przestępnych korzystne może być użycie tablic.
    Po drodze mamy jeszcze decyzje cząstkowe typu stały-czy zmienny przecinek (na poziomie procesora i języka), długość reprezentacji (dokładność) itp.

    Co do peryferii (dane i wizualizacja na PC, reszta na dsp) są to decyzje nieistotne z punktu implementacji sieci. Ukłąd może współpracować z PC przez jakiś interfejs szeregowy RS-USB-itd lub może być zrealizowany np. w postaci karty do PC, co absolutnie nie ma żadnego wpływu na działanie sieci neuronowej.
REKLAMA