Neuronales Netzwerke auf der "3cent CPU" (Padauk PFS154 und PMS150C)

OP #7698919
Lesenswert?
• ▲
▼

Eine Implementierung einer Inferenzengine für den MNIST Datensatz auf einer MCU mit 1kword ROM und 64 bytes RAM.

Die Eingangsdaten müssen auf 8x8 skaliert werden. Immerhin werden noch >90% Genauigkeit erreicht.

https://github.com/cpldcpu/BitNetPDK

Der Nutzen auf so einem kleinen Mikrocontroller ist natürlich begrenzt, zeigt aber wie weit machine-learning Ansätze skalieren können.

#7699275
Lesenswert?
• ▲
▼

Tim  . schrieb:

Eine Implementierung einer Inferenzengine für den MNIST Datensatz auf einer MCU mit 1kword ROM und 64 bytes RAM.

Entschuldige mein völliges Unwissen und die Übersetzung für mich:

Du hast

  • einen Handschrift-Datensatz (https://en.wikipedia.org/wiki/MNIST_database) genommen
  • nach 8x8 Pixel in Graustufen gerendert
  • damit ein neuronales Netz trainiert
  • das Netz (die Gewichtungen) und die Regeln in den Padauk gestopft
      • BitBang-Sende-Uart
      • 4 Test-Beispiel-Daten

Und der Padauk erkennt das "Geschmiere" zu 90% richtig? D.h. prinzipiell reicht der aus, um eine handgeschrieben Zahl zu erkennen, die ihm irgendwie übermittelt wird (abgesehen vom zusätzlich notwendigen RAM)?

Ich bin wirklich beeindruckt.

OP #7699300
Lesenswert?
• ▲
▼

Bruno V. schrieb:

Und der Padauk erkennt das "Geschmiere" zu 90% richtig? D.h. prinzipiell reicht der aus, um eine handgeschrieben Zahl zu erkennen, die ihm irgendwie übermittelt wird (abgesehen vom zusätzlich notwendigen RAM)?

Genau. Die UART-Routinen passen nur in den PFS154, der PMS150C kommt ohne Ausgabe aus.

Der MNIST-Datensatz ist ziemlich bekannt, da er der ersten relevanten Anwendung zu Grunde lag, bei der Machine-Learning für die Klassifizierung von Bildern genutzt wurde:

https://en.wikipedia.org/wiki/LeNet

#7699873
Lesenswert?
• ▲
▼

Vanye R. schrieb:

Koennte man damit eigentlich auch eine ADC-Messung mit sagen wir mal 50-100Messwerten mache und dann darin irgendein Muster finden? Sagen wir mal das Maximum nach einem Minimum oder irgendsowas schlichtes? Oder ist der dafuer schon zu klein?

Bei 64 Byte RAM sollten die Daten schon als Stream vorliegen ;-)

Ohne das Projekt des TOs zu relativieren (das ist genial), hier was komplett anderes mit einem vergleichbaren Prozessor:

https://www.dos4ever.com/uscope/uscope_e.html

#7700046
Lesenswert?
• ▲
▼

Bei 64 Byte RAM sollten die Daten schon als Stream vorliegen ;-)

Okay okay.... :-) Aber es muss ja nicht immer so ganz minimal sein. Also sagen wir mal so ein kleiner STM32xxx mit 128k flash und 32k ram wie man sie heute zu dutzenden rumfliegen hat.

Das ist schon ganz interessant sich da mal mit zu beschaeftigen.

Vanye

OP #7700452
Lesenswert?
• ▲
▼

Vanye R. schrieb:

Koennte man damit eigentlich auch eine ADC-Messung mit sagen wir mal 50-100Messwerten mache und dann darin irgendein Muster finden? Sagen wir mal das Maximum nach einem Minimum oder irgendsowas schlichtes? Oder ist der dafuer schon zu klein?

Ja klar. Für Zeitserien würde man aber evtl. auf RNN zurück greifen. https://en.wikipedia.org/wiki/Recurrent_neural_network

Für einfachere Aufgaben reichen wohl klassische statistische Methoden.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.