Päivitys (13 / 02 / 2026): Meillä on runsaasti varastossa kaikkia tuotteitamme, löydät meidät myös täältä ja    Lue lisää

Kuinka integroida hermoverkko SBC:hen

Tässä artikkelissa opimme integroimaan hermoverkon SBC. Luomme 3-kerroksisen hermoverkon funktion sin(x) approksimoimiseksi.

Prosessi on jaettu kahteen osaan: 1. verkon koulutus, joka tehdään PC:llä ja; 2. verkon käyttäminen, joka tehdään SBC:ssä.

Osa 1. Neuroverkkokoulutus

Tässä osassa käytämme Jupyter-muistikirjoja Keras-, Numpy- ja Pylab-kirjastojen kanssa.

Vaihe 1. Tuo tarvittavat kirjastot

Vaihe 2. Luo harjoitustietojoukko

Tietojoukkomme koostuu 10000 0 satunnaisluvusta välillä 2 – 0*pi syötteenä X ja niitä vastaavasta sin-funktiosta syötteenä Y. Huomaa, että olemme säätäneet alueen Y alueelle 1-XNUMX.

Vaihe 3. Luo hermoverkko

Neuroverkon luomiseksi luomme malliobjektin ja lisäämme siihen 3 kerrosta. Tämä tehdään Keras-kirjaston tarjoaman API:n kautta.

Hermosolujen lukumäärä on 32 ensimmäisessä kerroksessa, 32 keskikerroksessa ja 1 ulostulossa.

Käytämme relu- ja sigmoid-aktivaatioita.

Käytetty optimoija on Adam ja virhefunktio MSE.

Verkkoparametrien määrä on 1153.

Vaihe 4. Koulutus

Harjoittelussa hermoverkko käyttää tietojoukkoa säätääkseen parametrejaan siten, että virhe minimoidaan.

Tässä tapauksessa välitimme koko tietojoukon verkon läpi 10 kertaa, 32 näytteen erissä.

Kuten näemme, koulutuksen lopussa virhe on hyvin pieni, 2.5e-5.

Vaihe 5. Vahvistus

Nyt testaamme hermoverkkoa viimeisen kerran ja vertaamme sitä odotettuihin arvoihin. Kuten kaaviosta näkyy, verkko approksimoi sinifunktiota melko hyvin.

Vaihe 6. Vie tiedot

Tämän toiminnon avulla voit viedä hermoverkon painot tekstitiedostoon ja ladata sen sitten SBC:stä.

Osa 2. Toteutus SBC:ssä

Ensinnäkin tarkastelemme hermoverkon toteutusta.

Neuraaliverkko on jaettu 4 luokkaan: Neural_Network, Layer, Perceptron ja Activation.

Jokaisella luokalla on periaatteessa 1 menetelmä nimeltä prosessi, joka vastaa kaiken työn tekemisestä sekä lataus- ja tallennusmenetelmistä.

Aktivointi luokka, toteuttaa lineaariset, relu-, sigmoid- ja tanh-aktivointitoiminnot.

perceptron luokka on vastuussa kaikkien kertolaskujen suorittamisesta. Huomaa, että vektorin kertolaskutoiminto on toteutettu ASM:ssä, jotta suorituskykyä ei uhrata.

ASM vs Python toteutus

Vektorikerroin vastaa suurimmasta osasta suorittimen käyttöä, joten sen toteuttaminen ASM:llä mahdollistaa kirjaston suorituskyvyn parantamisen huomattavasti. Tässä esimerkissä suoritetaan yksinkertainen 100 × 100 vektorin kertolasku. Python-toteutus kestää 1339 us, kun taas ASM-toteutus kestää vain 28 us. Tämä on noin 50 kertaa nopeampi, samalla kun samat lähtöarvot säilyvät.

kerros luokka ryhmittelee muutaman perceptronin rinnakkain.

Luokka Neural Network pinoaa kaikki verkon kerrokset.

Lopuksi voimme tarkastella/tarkistaa verkon käytön.

Kopioimme painot sisältävän tiedoston SBC:hen ja suoritamme seuraavan main.py:n.

Tämä koodi lataa verkon sine.unn-tiedostosta ja laskee sinin 0.123:sta ja näyttää sitten verkon saaman arvon ja reaalisinin sekä laskenta-ajan mikrosekunteina.

ulostulo:

Kuten näemme, tulos lähentää odotettua arvoa 4 desimaalilla.

Tämä verkko, jossa oli 1153 painoarvoa, vaati 4612 (1153*4) tavua RAM-muistia painojen tallentamiseen kelluvana arvona ja 5.8 ms käsittelyyn.

Jos pidit tästä sisällöstä, voit seurata meitä Twitter, YouTube, Facebook or LinkedIn pysyäksesi ajan tasalla tällaisesta sisällöstä.

Onko sinulla kysyttävää tai pyyntöjä?
Ota meihin yhteyttä! Vastaamme <24 tuntia!

ikoni
Ota yhteyttä ArduSimple
lähellä
ArduSimple GNSS RTK -arviointitaulut on tehty helpoksi

Haluatko oppia lisää GPS:stä ja RTK:sta?

Jos olet juuri nyt kiireinen, insinöörimme voivat lähettää sinulle kolme lyhyttä sähköpostia, joissa kerrotaan kaikki tarvittavat tiedot projektisi aloittamiseksi.