Aktualisierung (10 / 10 / 2024): Wir haben alle unsere Produkte auf Lager, finden Sie uns auch in und dem    Jetzt shoppen

So integrieren Sie ein neuronales Netzwerk in Ihren SBC

In diesem Artikel erfahren Sie, wie Sie ein neuronales Netzwerk in die integrieren SBC. Wir werden ein dreischichtiges neuronales Netzwerk erstellen, um die Funktion sin(x) zu approximieren.

Der Prozess gliedert sich in zwei Teile: 1. Training des Netzwerks, das auf dem PC durchgeführt wird; 2. Ausführen des Netzwerks, was im SBC durchgeführt wird.

Teil 1. Training für neuronale Netze

Für diesen Teil verwenden wir Jupyter-Notebooks mit den Keras-, Numpy- und Pylab-Bibliotheken.

Schritt 1. Importieren Sie die erforderlichen Bibliotheken

Schritt 2. Erstellen Sie das Trainings-Dataset

Unser Datensatz besteht aus 10000 Zufallszahlen im Bereich 0 – 2*pi als Eingabe X und ihrer entsprechenden Sinusfunktion als Eingabe Y. Beachten Sie, dass wir den Bereich von Y auf einen Bereich von 0 bis 1 angepasst haben.

Schritt 3. Erstellen Sie das neuronale Netzwerk

Um das neuronale Netzwerk zu erstellen, erstellen wir ein Modellobjekt und fügen ihm 3 Schichten hinzu. Dies erfolgt über die von der Keras-Bibliothek bereitgestellte API.

Die Anzahl der Neuronen beträgt 32 für die erste Schicht, 32 für die mittlere Schicht und 1 für die Ausgabe.

Wir werden die Relu- und Sigmoid-Aktivierungen verwenden.

Der verwendete Optimierer ist Adam und die Fehlerfunktion MSE.

Die Anzahl der Netzwerkparameter beträgt 1153.

Schritt 4. Training

Beim Training passt das neuronale Netz anhand des Datensatzes seine Parameter so an, dass der Fehler minimiert wird.

In diesem Fall haben wir den gesamten Datensatz zehnmal in Stapeln mit 10 Proben durch das Netzwerk geleitet.

Wie wir sehen können, ist der Fehler am Ende des Trainings sehr klein, 2.5e-5.

Schritt 5. Überprüfung

Jetzt testen wir das neuronale Netz ein letztes Mal und vergleichen es mit den erwarteten Werten. Wie in der Grafik zu sehen ist, approximiert das Netzwerk die Sinusfunktion ziemlich gut.

Schritt 6. Exportieren Sie die Daten

Mit dieser Funktion können Sie die Gewichte des neuronalen Netzes in eine Textdatei exportieren und diese dann aus dem SBC laden.

Teil 2. Ausführung auf dem SBC

Zunächst werden wir die Implementierung des neuronalen Netzes überprüfen.

Das neuronale Netz ist in 4 Klassen unterteilt: Neural_Network, Layer, Perceptron und Activation.

Jede Klasse hat im Grunde eine Methode namens process, die für die gesamte Arbeit sowie das Laden und Speichern von Methoden zuständig ist.

Der Aktivierung Klasse, implementiert die Aktivierungsfunktionen linear, relu, sigmoid und tanh.

Der Perceptron Klasse ist für die Durchführung aller Multiplikationen verantwortlich. Beachten Sie, dass die Vektormultiplikationsfunktion in ASM implementiert ist, um die Leistung nicht zu beeinträchtigen.

ASM vs. Python-Implementierung

Die Vektormultiplikation ist für den größten Teil der CPU-Auslastung verantwortlich, sodass die Implementierung auf ASM die Bibliotheksleistung erheblich verbessern kann. In diesem Beispiel wird eine einfache 100×100-Vektormultiplikation durchgeführt. Eine Python-Implementierung benötigt 1339 us, während die ASM-Implementierung nur 28 us benötigt. Dies ist etwa 50-mal schneller, während die gleichen Ausgabewerte beibehalten werden.

Der Schicht Klasse gruppiert einige Perceptrons parallel.

Die Klasse Neurales Netzwerk stapelt alle Netzwerkschichten.

Schließlich können wir die Nutzung des Netzwerks überprüfen/überprüfen.

Wir kopieren die Datei mit den Gewichten auf den SBC und führen die folgende main.py aus.

Dieser Code lädt das Netzwerk aus der Datei sine.unn und berechnet den Sinus von 0.123 und zeigt dann den vom Netzwerk erhaltenen Wert und den echten Sinus sowie die Berechnungszeit in Mikrosekunden an.

Ausgang:

Wie wir sehen, nähert sich die Ausgabe dem erwarteten Wert mit 4 Dezimalstellen an.

Dieses Netzwerk mit 1153 Gewichten benötigte 4612 (1153*4) Bytes RAM, um Gewichte in Float-Werten zu speichern, und 5.8 ms für die Verarbeitung.

Wenn Ihnen dieser Inhalt gefallen hat, können Sie uns weiter folgen Twitter, YouTube, Facebook or LinkedIn um über solche Inhalte auf dem Laufenden zu bleiben.

Haben Sie Fragen oder Wünsche?
Kontaktiere uns! Wir antworten <24 Stunden!

Symbol
Kontakt ArduSimple
Menu

Möchten Sie mehr über GPS/RTK erfahren?

1. Unser Engineering-Team wird sich mit Ihnen in Verbindung setzen, um alle Fragen zu klären
2. Wir halten Sie über Werbeaktionen und neue Produktveröffentlichungen auf dem Laufenden
3. Sie hören nur von uns, wenn wir wichtige Neuigkeiten haben, wir spammen Ihre E-Mail nicht zu