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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren