Aggiornamento (22 / 06 / 2025): Abbiamo un ampio stock di tutti i nostri prodotti, trovaci anche in e    Acquista ora

Come integrare una rete neurale nel tuo SBC

In questo articolo impareremo come integrare una rete neurale nel SBC. Creeremo una rete neurale a 3 strati per approssimare la funzione sin(x).

Il processo è diviso in due parti: 1. formazione della rete, che verrà eseguita sul PC e; 2. esecuzione della rete, che verrà eseguita nell'SBC.

Parte 1. Formazione sulle reti neurali

Per questa parte utilizzeremo i notebook Jupyter, con le librerie Keras, Numpy e Pylab.

Passo 1. Importa le librerie necessarie

Passaggio 2. Creare il set di dati di addestramento

Il nostro set di dati è composto da 10000 numeri casuali nell'intervallo 0 – 2*pi come input X e la funzione sin corrispondente come input Y. Si noti che abbiamo regolato l'intervallo di Y in modo che vada da 0 a 1.

Passaggio 3. Creare la rete neurale

Per creare la rete neurale, creiamo un oggetto modello e vi aggiungiamo 3 livelli. Questo viene fatto tramite l'API fornita dalla libreria Keras.

Il numero di neuroni sarà 32 per il primo strato, 32 per lo strato intermedio e 1 per l'uscita.

Useremo le attivazioni relu e sigmoid.

L'ottimizzatore utilizzato è Adam e la funzione di errore MSE.

Il numero di parametri di rete è 1153.

Passaggio 4. Formazione

Durante l'addestramento, la rete neurale utilizza il set di dati per regolare i suoi parametri in modo tale da ridurre al minimo l'errore.

In questo caso, abbiamo passato l'intero set di dati attraverso la rete 10 volte, in batch di 32 campioni.

Come possiamo vedere, alla fine dell'allenamento, l'errore è molto piccolo, 2.5e-5.

Passaggio 5. Verifica

Ora testeremo la rete neurale un'ultima volta e la confronteremo con i valori previsti. Come si vede nel grafico, la rete approssima abbastanza bene la funzione seno.

Passo 6. Esporta i dati

Questa funzione permette di esportare i pesi della rete neurale in un file di testo per poi caricarlo dall'SBC.

Parte 2. Esecuzione su SBC

Prima di tutto, esamineremo l'implementazione della rete neurale.

La rete neurale è divisa in 4 classi: Neural_Network, Layer, Perceptron e Activation.

Ogni classe ha fondamentalmente 1 metodo chiamato processo che è incaricato di fare tutto il lavoro, oltre a metodi di caricamento e salvataggio.

Attivazione class, implementa le funzioni di attivazione lineare, relu, sigmoid e tanh.

percettrone class è responsabile dell'esecuzione di tutte le moltiplicazioni. Si noti che la funzione di moltiplicazione vettoriale è implementata in ASM per non sacrificare le prestazioni.

Implementazione ASM vs Python

La moltiplicazione vettoriale è responsabile della maggior parte dell'utilizzo della CPU, quindi implementarla su ASM consente di migliorare di molto le prestazioni della libreria. In questo esempio, viene eseguita una semplice moltiplicazione vettoriale 100×100. Un'implementazione di Python richiede 1339 us, mentre l'implementazione di ASM richiede solo 28 us. Questo è circa 50 volte più veloce pur conservando gli stessi valori di output.

Strato la classe raggruppa alcuni percettroni in parallelo.

La classe Rete neurale impila tutti i livelli di rete.

Infine, possiamo rivedere/verificare l'utilizzo della rete.

Copiamo il file con i pesi nell'SBC ed eseguiamo il seguente main.py.

Questo codice carica la rete dal file sine.unn e calcola il seno di 0.123 e quindi visualizza il valore ottenuto dalla rete e il seno reale, oltre al tempo di calcolo in microsecondi.

Uscita:

Come si vede, l'output approssima il valore atteso con 4 decimali.

Questa rete, con 1153 pesi, richiedeva 4612 (1153*4) byte di RAM per memorizzare i pesi nel valore float e 5.8 ms per l'elaborazione.

Se ti è piaciuto questo contenuto, puoi seguirci su Twitter, YouTube, Facebook or LinkedIn per rimanere aggiornato su contenuti come questo.

Hai domande o richieste?
Contattaci! Risponderemo <24 ore!

Icona
Contatti ArduSimple
Chiudi

Vuoi saperne di più su GPS/RTK?

1. Il nostro team di ingegneri ti contatterà per risolvere qualsiasi domanda
2. Ti terremo aggiornato sulle promozioni e sul rilascio di nuovi prodotti
3. Riceverai nostre notizie solo quando avremo notizie importanti, non invieremo spam alla tua email