Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stress mit Pointer (https://www.delphipraxis.net/8177-stress-mit-pointer.html)

braingrenade 29. Aug 2003 21:50


Stress mit Pointer
 
Moin Leute!

hab wie oben schon geschrieben ein problem mit pointern :

diese zeile :
Delphi-Quellcode:
   
 synapse[i3].front[0].input := @neuron[i].output;
verlässt der compiler mit dieser meldung :

Access Violation at Address 0044E2BC ... Read of Address FFFFFFFF


hier noch die typen :
Delphi-Quellcode:
type Preal = ^real;

type Tcable = record
      input : Preal;
      output : real;
      conductivity : real;
    end;

type Tsynapse = class
       front : array of Tcable;
       back : array of Tcable ;
       ...
   end;

Type Tneuron = class
    output : real;
    ...
 end;
Weiß jemand was hier falsch ist ?

Flogo 29. Aug 2003 21:56

Re: Stress mit Pointer
 
Hast du mit setlength() alle dynamischen arrays auf die richtige Länge gebracht bevor du drauf zugreifst?

braingrenade 29. Aug 2003 22:00

Re: Stress mit Pointer
 
jo , hab ich ...

Leuselator 29. Aug 2003 22:09

Re: Stress mit Pointer
 
für mich nicht ersichtlich ist, warum Du neuron indizierst
@neuron[i]
um was dazu sagen zu können, müßtest Du das erklären...
greets

braingrenade 29. Aug 2003 22:16

Re: Stress mit Pointer
 
AAAAlsooo....

Ich hab vor ein Neuronales Netz zu programmieren ,
das besteht aus Neuronen und Synapsen , jetzt muss ich von der Synapse aus an den Output des Neurons kommen und vom Neuron aus an den Output
der synapse und das ganze natürlich während der Laufzeit ,
der teil den ich gepostet habe betrifft die Initialisierung des NN
und dort muss ich eben mit Pointern (wüsste nicht wie ich anders parameter übergeben könnte) die neuronen und die synapsen verknüpfen.

Hoffentlich ists verständlich was ich mein!

ich kann auch mal den Code posten!

Leuselator 29. Aug 2003 22:20

Re: Stress mit Pointer
 
nein - nicht klar - meine Frage bezog sich nicht auf das Problem, das Du am Ende mit dem Programm lösen möchtest, sondern darauf, wieso Du deine class neuron indizierst - geht aus dem Teil den Du gepostet hat nicht hervor...

braingrenade 29. Aug 2003 22:29

Re: Stress mit Pointer
 
Liste der Anhänge anzeigen (Anzahl: 1)
aso ...

hier ist mal der code .

Leuselator 30. Aug 2003 00:01

Re: Stress mit Pointer
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich weiss zwar nich, was ich da tue, aber zum warm machen
war's ganz nett.

Also so (siehe Anhang) sollte es funzen...

Wenn Du partout mit Arrays arbeiten willst (z.B. weil Du "classes" nicht drin haben magst), dann stell es halt wieder um,
ansonsten ist TList.Add und TList.Last handlicher.

Der Geck ist, dass ich nun nur noch Zeiger verwende.
Und mir war so, als ob Du das @ - Problem deshalb bekommst, weil Du auf ein Feld einer Klasse zugreifen wolltest. Dös geht aber glaub ich so nicht.
egal
schönen Gruß

braingrenade 30. Aug 2003 13:26

Re: Stress mit Pointer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hossa !

Danke , es funzt weitgehend aber leider gibts trotzdem noch ne access violation an der gleichen addresse und ich hab nach wie vor kein plan warum!

Ich arbeite so viel mit arrays weil ich bisher noch nichts von der Tlist wusste , bin nähmlich erst mit delphi 6 umgestiegen , davor hab ich nur good ol' Turbo Pascal geproggt sieht man meinem stil wohl an :D

edit : Hab noch die unit mit angehängt , awr nähmlich noch n' kleiner fehler drin , hab ich aber behoben.

negaH 30. Aug 2003 14:23

Re: Stress mit Pointer
 
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.

Leuselator 30. Aug 2003 14:59

Re: Stress mit Pointer
 
As I said - Mixe keine Ahnung, was da gemacht:
Mixe Frühstücken, dann Jedi mit Code kommt und: Bumm - Mixe hier!
:dance:

braingrenade 30. Aug 2003 15:10

Re: Stress mit Pointer
 
So auf die art hab ich s auch schon probiert , hat aber nicht gefunzt,
außerdem verwendet das netz so wie ich es machen will keine schichten,
sondern ist einfach ein großer Haufen. Auch In/output Neuronen soll es keine geben , sondern nur nerevenleitungen die auf bestimmte Neuronen zeigen und nur in eine Richtung leiten , das netz an sich soll keine Struktur haben. Im Eendeffekt will ich sozusagen ein kleines Gehirn Programmieren, das auf reize reagiert , das man aber nicht speziell trainniren kann , sonder nur durch input lernt und das auch neue synapsen und neuronen bilden kann.

Am besten wäre es wenn jedes neuron und jede Synapse unabhänging und selbständig laufen würden , so wie threads , aber ich bezweifle das man so viele Threads machen könnte , und ich weiß nicht wie ich die parameter zwischen Synapse und Neuron asutauschen könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz