Skocz do zawartości
mariuszz

Nauka machine learning - jak zacząć?

Pomocna odpowiedź

Wydaje mi się, że jeśli ktoś chce poznać lepiej uczenie maszynowe, to do tego przyda się dobra książka i bardzo mocny komputer, najlepiej z solidną kartą graficzną.

Natomiast użycie AI w systemach embedded to trochę inny temat. I tak trzeba sieć wytrenować na PC, później zostaje już tylko konwersja na mikrokontroler i w tym faktycznie może pomóc AI-CUBE. Miałem o tym napisać artykuł, ale trochę zabrakło czasu.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

No właśnie to najbardziej interesujące. Nie miałem czasu zagłębiać się w szczegóły ale wydaje się, że tylko tensorflow jest kompatybilny z interfejsem st.AI? Przyznam się, że nie udało mi się zestawić FANN z .AI a ile to wszystko czasu pochłania.. Samo trenowanie modelu w kerasie jakoś wybitnie trudne do zestawienia nie jest ale chyba sam przyznasz, że na początku może i to sprawiać problemy komuś kto widzi to pierwszy raz na oczy. Ostatnio jest taka moda, że wszystkie SCI ładują do pytona a mnie się on nieco ślizga 😜 ale chyba będzie trzeba przysiąść nad nim solidnie bo takie tyle-o-ile najczęściej nie wystarcza.

*gnu fann c

znalazłem gdzieś jakieś wtyczki czy coś ale cudze wynurzenia w wolnym czasie i się z tego praktycznie korzystać nie da.

Udostępnij ten post


Link to post
Share on other sites

No właśnie nigdy nie robiłem nic z SSN, a muszę to wrzucić do STM-a. Konkretnie chodzi o rozpoznawanie wzorców ruchowych na podstawie odczytów z czujników inercyjnych (jeszcze nie wiem, czy wystarczy akcelerometr, czy też dodać żyroskop). Na początek muszę więdzieć, jak przygowowaxmć dane, jak je oznaczyć itp. Reszta chyba jakoś jest opisana/przedstawiona na stronie st. Chociaż od czasu wrzucenia poradników zmieniły się wersje czy to X-CUBE-AI, czy samego CubeMX i nie wszystko jest zgodne z tymi poradnikami.

Czyli co, najpierw Python na PC?

Udostępnij ten post


Link to post
Share on other sites

Nie musisz znać pytona, żeby wykorzystać bibliotekę keras. Zrób tak jak jest w tym poradniku i postępuj zgodnie z dokumentacją z ST. Różnica z tymi backendami polega jedynie na sposobie odczytywania przetrenowanych modeli. Ściągnij sobie gotowy na tensorze z gita i sprawdź czy się go da zlinkować z st.ai. Jeśli się da to ten z kerasa też musi się dać.

Udostępnij ten post


Link to post
Share on other sites

Bez podstaw pythona raczej nie da się używać keras, ani nic sensownego w AI zrobić. Nie musisz być od razu pythonowym guru, ale postawy są niezbędne. Inaczej zostanie tylko uruchamianie gotowców i zabawa przygotowanymi przez kogoś sieciami.

Udostępnij ten post


Link to post
Share on other sites

Masz rację, ale też zależy kto do czego tego potrzebuje. Jeśli np. che się ich stosować zamiast PIDa to gotowiec wystarczy w zupełności, jedynie własne zakresy trzeba podać. Jednak sieć neuronowa jest po miesiącu znacznie skuteczniejsza od PIDa.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Ale właśnie jak to jest? Co siedzi w tym pliku model.h5 z przykładów? To jest goła uniwersalna sieć, czy wytrenowana pod dane zastosowanie? Jak można jej użyć? Wszędzie pokazują tylko jej walidacje. Jak ją wykorzystać? Co zrobić z danymi uczącymi - mają być w programie na uC, czy są potrzebne tylko do zrobienia modelu? Jak uzyskać odpowiedź sieci? 

Edytowano przez radek04

Udostępnij ten post


Link to post
Share on other sites

Cóż, najprościej rzecz ujmując to w ten model z jednej strony wchodzą dane potokiem a z drugiej wychodzą "poprawione" czyli dostosowane do przeznaczenia i tak to mniej więcej wygląda w uC. Sam model to w rezultacie zbity filtr aktywny, kwestia jedynie samej jego interpretacji w programie docelowym. Czyli z jednej strony backend kompatybilny z frameworkiem w urządzeniu docelowym i api w procku.

Architektura specjalizowanych sieci neuronowych to zupełnie oddzielna dziedzina nauki i wolałbym się w niej nie zgubić bo za malutki do tego jestem ;p

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Czyli mogę wykorzystać model.h5 z przykładów st, czy muszę robić swój? I jak wytrenować sieć? Można gdzieś znaleźć konkretny przykład użycia sieci w stm32? 

Edytowano przez radek04

Udostępnij ten post


Link to post
Share on other sites

Ogólnie te części które nie biorą udziału w przetwarzaniu danych nie są implementowane w deployu. To zależy od typu danych jakie mają być przetwarzane. https://pl.wikipedia.org/wiki/Sie%C4%87_neuronowa Możesz wykorzystać gotowy, możesz mu dołożyć więcej "neuronów" np.  Zacząłbym od gotowców i sprawdził czy działają w ogóle.

Udostępnij ten post


Link to post
Share on other sites

Też tak chcę zrobić. Ale nie wiem jak. Co zrobić z danymi uczącymi? Jak wprowadzic dane do "sprawdzenia" przez sieć? Można gdzieś podejrzeć taki gotowy przykład? No bo mam ten model wgrany do stm32, ale jak go użyć? Tak łopatologicznie. Np. mam ciąg liczb, które oznaczają A, inny ciąg oznaczający B. Zbieram dane uczące do pliku (plików) csv (jaka konstrukcja? liczba1, liczba2, ... ,liczba n, A lub B ???), następnie chcę, by inny ciąg został skategoryzowany jako A lub B. I nie wiem, jak to ugryźć.

Udostępnij ten post


Link to post
Share on other sites

Też się chętnie dowiem jak to powinno wyglądać. Kwestia znajomości biblioteki i jej możliwości ale niestety nie mam czasu na studiowanie dokumentacji 😕  Poszukaj gotowych skryptów pytonowych i popróbuj na gotowcu. Na forum ST była dyskusja na ten temat.

Udostępnij ten post


Link to post
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!

Gość
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...