Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
|
Re: Stress mit Pointer
30. Aug 2003, 15:23
Ich habe mir mal deinen Source angeschaut. Normalerweise arbeitet man bei NN's ohne jegliche Indirekte Indizierungen, sprich Pointer auf Reals bzw. Input's usw. Dies ist garnicht nötig, nicht bei der Aktivierunge eines Netzes und auch nicht beim Training. Man erzeugt für jeden Layer einfach ein Array[] of TNeuron wobei TNeuron eigentlich ein simpler Record ist. Dann geht man einfach sequentiell über diese Layer-Arrays um den Zustand des Netzes bis hin zu den Outputs zu berechnen. Man macht die weil solche Netze ziemlich groß werden und enorm viele Floatingpoints enthalten. Eine Verlinkung mit Pointern würde bedeuten das man jeden Layer mehrfach berechnet was aber ineffizient wäre. Normaelweise wird bei der Berechnung des Layers 1 auch schon teilweise der Layer 2 usw. berechnet.
Bei der spärteren Optimierung würden nun arrays[] of Records dieser Optimierung entgegenkommen, z.B. Assembler/SSE2 usw.
Ich persönlich habe ein NN mit Speed-Backpropagtion + Delta Training + Backtracking gecodet. Dann noch ein RCC = Recurrent Cascade Correlation Netzwerk mit Speed-Backpropagation und Delta Trainung.
Gruß Hagen
Achso, bei NN's spielt erstmal eine schnelle Speicherverwaltung keinerlei Rolle. Wichtiger bei einem NN ist dessen Übersichtlichkeit, das der benutzte Algorithmus gut ist und das das NN zugeschnitten auf das zu lösende Problem ist. Erst dann sind effiziente Datenstrukturen wichtig.
|