PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuronales Netz mit dem Atmega8



Spartakus
18.03.2006, 20:05
Hi.

Bin neu hier und hab gleich ne viell. blöde Frage.
Ist es überhaupt möglich ein kleines Neuronales Netz mit einem AVR (mega8) zu realisieren? Das KNN soll 12 Eingänge und 2 Ausgänge haben.
Von den I/O Pins müsste es eig. gehen, aber wie sieht es mit der Paralellität und der Geschwindigkeit aus? Reicht der mega8 dafür aus oder muss ein FPGA o.ä. her??

Hat jemand Erfahrungen oder Tips parat?

PasstScho
18.03.2006, 20:14
Hi,
Also ich kenne mich mit NNs leider nicht besonders gut aus, aber ich denke da wirds mit dem Mega8 schon knapp.
Der hat immerhin nur 8Bit und wenn du mit floats oder so rechnen willst wird das extrem zeitaufwendig.
Die 16Mips würden von flaots recht schnell ausgelastet werden.
Wenn du das mit Bytes realisierst könnte es schon eher klappen.
Und ob 1kb Ram für das ausreicht kann ich auch nicht genau sagen.

Du kannst dir ja schonmal AvrGCC und AvrStudio laden und programmieren... Da ist auch ein Simulator dabei.
Dann wirst du schon sehen ob das reicht oder nicht.
MfG Alex

Madgyver
18.03.2006, 20:16
Also AVRs arbeiten alle seriell. Allerdings, sind 12 Eingänge und 2 Ausgänge sehr wenig. Das wird je nach Topologie so schnell berechnet werden, dass es keinen unterschied macht.

Was für eine Topologie willst du benutzen? Back propagation oder selbst organisierend?

ogni42
18.03.2006, 21:20
Ob der Mega8 ausreicht, hängt davon ab, wie schnell Dein Ergebnis bereit stehen muss, aber mit 16MIPS kann man schon einiges machen. Da Du von 12 Eingängen und 2 Ausgängen sprichst, ist das wahrscheinlich recht schnell.

Ein KNN kannst Du prinzipiell ohne Floats rechnen. 8Bit für die Inputs und 16 Bit für die Gewichte reichen aus. (Die Synapse3*PC arbeitet z.B. mit 16bittigen Gewichten und Fixpunt. Der AVR kann auch Fixpunkt - FMULx).

Ein Recall auf einem 12-6-2 Netz (nur mal so als Beispiel) würde
6*(12Mul, 11 ADD) + 2*(6Mul, 5 ADD) in 16Bit benötigen. Macht also:
84MUL und 76ADD in jeweils. Mal über den Daumen gepeilt jeweils 8Zyklen (wg. 16 Bit) pro Operation macht 1280 Zyklen, um ein Muster zu propagieren. Macht bei 16 MHz: 80us. Eigentlich recht schnell.

Spartakus
18.03.2006, 21:25
Hi.

Danke für eure Antworten.
Also ich hab an ein feed-forward-netz mit ca. 5-10 versteckten Neuronen
gedacht (Backpropagation).
Der AVR läuft mit dem 16Mhz quarz. Reicht denn diese Geschwindigkeit nicht für eine "Pseudo-Paralellität" oder so aus? Was ist denn wenn ich mehrere AVR nehmen würde?
Wäre schade wenn KNN'S nur mit FPGA's etc. gehen würden.
Denn wenn ich nur an die Programmierung von den Dingern denke (VHDL) bekomm ich ein flaues Gefühl im Magen. ;)


Grüße, Sparatkus

Madgyver
18.03.2006, 21:31
Die Frage is, wie schnell das Ergebniss da sein muss. Wie schnell soll ein solches Netz nach Anlegen des Eingangsignals das Ausgangssignal produziert haben?

Spartakus
18.03.2006, 21:33
@ogni24

Hört sich nicht schlecht an. Ich werd erstmal mit ner geringeren Anzahl von Neuronen starten und schaun was dabei herauskommt.
Mal sehen ob ich überhaupt den Lernalgorithmus in C implementiert bekomme :)
Wenns klappt kann ich ja mal austesten wieviel Neuronen der mega8 "verkraftet"..
Werd in den nächsten Tagen damit anfangen und drüber berichten.

Nochmals Danke für die antworten

Hautus
19.03.2006, 08:46
Hi,

generell gilt ja bei Systemen, die Information verarbeiten, um Roboter zu steuern, daß bestimmte Echtzeitanforderungen einzuhalten sind. Braucht der Roboter nun T = 10 ms, um einen seriellen Algorithmus zu verarbeiten, wird dieser quasi-parallele Betrieb mit eben dieser Abtastzeit T diskretisiert. Nun sind die Frequenzen, die ohne Anti-Aliasing detektiert werden können, begrenzt auf die halbe Abtastzeit.

Daraus folgt unmittelbar eine Grenze für den Betrieb auch eines neuronalen Netzwerker. Du musst Dir überlegen, ob die resultierende Verarbeitungsgeschwindigkeit Deines uC ausreicht, um den Anforderungen des Sollbetriebs zu entsprechen. Ansonsten sind DSP für solche Aufgaben da (aber das wißt ihr sicher ;) )...

Mich würde aber auch interessieren, was mit den ATMEL möglich ist, also finde mal raus, für welche Systeme welche Anforderungen da sind.
Würde mich auch interessieren.

MfG,
[shadow=blue:cdf3973105]-björnsn[/shadow:cdf3973105]