-         
Ergebnis 1 bis 8 von 8

Thema: Neuronales Netz mit dem Atmega8

  1. #1

    Neuronales Netz mit dem Atmega8

    Anzeige

    Hi.

    Bin neu hier und hab gleich ne viell. blöde Frage.
    Ist es überhaupt möglich ein kleines Neuronales Netz mit einem AVR (mega 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?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.11.2004
    Ort
    München
    Alter
    30
    Beiträge
    447
    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

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    15.07.2004
    Alter
    32
    Beiträge
    807
    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?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    51
    Beiträge
    1.195
    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.

  5. #5

    Topologie

    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

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    15.07.2004
    Alter
    32
    Beiträge
    807
    Die Frage is, wie schnell das Ergebniss da sein muss. Wie schnell soll ein solches Netz nach Anlegen des Eingangsignals das Ausgangssignal produziert haben?

  7. #7

    Probieren geht über....

    @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

  8. #8

    Systeme

    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]

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •