Maschinelles Lernen auf einem µC

Gast #4653187
Hallo Forum,

ich beschäftige mich gerade mit maschinellem Lernen am Rande, da ich in 
einer festen batteriebetrieben Applikation eine passende 
Hardwareplattform dafür anbieten muss. Leider lassen die wenig gemachten 
Voruntersuchungen mir nicht viel Wahl und ich muss etwas tiefer rein.

Für den PC gibt es ja schon so einige Toolkits. Interessant sind 
natürlich die kostenfreien. Für Python gibt es Scikit-learn und neu: 
Tensorflow von google. API's die anbieten auf der Grafikkarte die 
Algorithmen zu lösen, sagen ja schon recht viel über den 
Ressourcenhunger aus...

Zur Aufgabenstellung:

Ich habe eine 4-Dimensionale (Eingangswerte) (evtl. auch höhere D.) 
Funktion zu der ich eine 3D-Lösungsfunktion (Ausgangswerte) besitze. 
Also einfach ausgedrückt: Ich habe drei Eingangswerte und brauche die 
zwei passenden Ausgangswerte. Lösung: maschinelles Lernen -> Regression 
?!

Nun waren die ersten Versuche nicht von mir und es stellte sich heraus, 
dass es mit 8 GB Arbeitsspeicher und nem Quad-Core CPU ganz gut 
funktioniert...

Zur Frage:

Ich habe mir einiges an Dokumentation zu scikit-lern durchgelesen, 
leider konnte ich bisher keine Parameter entdecken, mit dem ich den 
Ressourcenhunger beim Lernen begrenzen könnte.
Mein Wunschziel wäre es eine "Lernmatrix" in der Größe um maximal 1 MB 
(Flash) zu genieren und die anschließende Regression sollte maximal 300 
kB RAM benötigen. Die Rechenzeit würde ich der Einfachheit halber erst 
einmal ausklammern. Ich fürchte nur, dass sich die nötigen Ressourcen 
einfach aus den verwendeten Algorithmen (+ Datenpunkten) ableiten.
Mein Ansatz bei über 100k Samples wäre nach diesem Flowchart: 
http://scikit-learn.org/stable/tutorial/machine_learning_map/
wäre die SGDRefressor Klasse.

Bin ich auf dem Holzweg? Könnte mir jemand kurz umreißen wie ich dieses 
Problem angehe und der Lösung näher rücke?

Vielen Dank

Reiner
Gast
> Ich habe eine 4-Dimensionale (Eingangswerte) (evtl. auch höhere D.)
> Funktion zu der ich eine 3D-Lösungsfunktion (Ausgangswerte) besitze.

Butter bei die Fische. Wie sehen die Funktionen aus?

> Also einfach ausgedrückt: Ich habe drei Eingangswerte und brauche die
> zwei passenden Ausgangswerte.

Nur drei Werte, die auf zwei abgebildet werden?
Gast
Sorry, natürlich habe ich mehr Daten (> 100 kSamples), also drei 
Eingangsdatenreihen sollen auf zwei Ausgangsfunktionen abgebildet 
werden. Der Input kommen von Gassensoren. Der Ausgangs-/Referenzsignale 
wurden natürlich zuvor ermittelt.
Gast
Reiner schrieb:
> Ich habe drei Eingangswerte und brauche die
> zwei passenden Ausgangswerte.

Ein neuronales Netz lässt sich auch auf einem µController realisieren, 
es kommt halt darauf an wie komplex. Man kann aber auch das Lernen auf 
einem PC durchführen und nur die fertigen Parameter an den Controller 
übergeben.

Georg
Gast
Das habe ich vor. Ich möchte nur gern die gelernten Daten schon beim 
anlernen auf ein realistische Größe begrenzen. Wie könnte ich das 
angehen z.B. mit scikit-learn?
Gast
Naja, einfach mit einem beliebigen Framework das Netzwerk anlernen. 
Hierbei darauf achten, dass du nicht zuviele Neuronen + Schichten 
einsetzt und idealerweise LReLU oder ReLU Aktivierungsfunktionen. Je 
nach komplexität kommst du vielleicht mit ein paar hundert floats aus. 
Die angelernten Gewichte exportieren und dann brauchst du auf dem uC nur 
noch ein wenig addieren + multiplizieren und die nichtlineare 
Aktivierungsfunktion anwenden. Hierfür ist manchmal eine Matrix Bib 
hilfreich.
Moin,

Wieso musses denn unbedingt auf einem µC laufen? Jeden Tag kommen doch 
ein paar neue Multicore-ARMs mit RAM und Gedoens und GHz auf kleinen 
Platinen fuer kleines Geld raus. Da drauf laeuft sicherlich das, was du 
an Software vom dem PC kennst...

Gruss
WK

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.