Diskussion zum Artikel "Neuronale Netze leicht gemacht" - Seite 8

 

Hallo Dmitriy,

ich arbeite seit einigen Wochen an den ersten beiden Teilen deiner "Neural Networks"-Serie und stoße immer wieder auf den folgenden Code, wenn ich durch Neuronen (oder andere Dinge) blättere.

Ich verstehe es wirklich nicht - meiner Meinung nach würde dies immer das letzte Element auslassen. Die Total() -Funktionen sollten einen Zähler zurückgeben, dann entfernen Sie einen und verwenden "<" in der for-Schleife. Bei einer Total()-Zahl von 2 würden Sie die for-Schleife also nur einmal durchlaufen.

Was übersehe ich?

Mit freundlichen Grüßen,

Delf


   int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
 

In einem Teil des Codes haben Sie etwas geschrieben wie:

int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

aber nehmen wir an, wir haben 20 Neuronen in der Schicht, und wir weisen die Variable total mit 19 [int total=Layer.Total()-1] zu, so dass jetzt total gleich 19 ist, wenn wir über Neuronen von Index 0-18 (total=19) iterieren, erreichen wir nie den Index 19 (letztes Neuron), ich denke, wir müssen den Code mit ändern:

int total=Layer.Total();
   for(int n=0; n<=total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

oder

int total=Layer.Total()-1;
   for(int n=0; n<= total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

um das letzte Neuron in der Schicht zu erreichen.

Was ist Ihre Idee?

 
Hedayat Yazdani:

in einem Teil des Codes haben Sie etwas geschrieben wie:

aber nehmen wir an, wir haben 20 Neuronen in der Schicht, und wir weisen die Variable total mit 19 [int total=Layer.Total()-1] zu, so dass jetzt total gleich 19 ist, wenn wir über Neuronen von Index 0-18 (total=19) iterieren, erreichen wir nie den Index 19 (letztes Neuron), ich denke, wir müssen den Code mit ändern:

oder

um das letzte Neuron in der Schicht zu erreichen.

Was ist Ihre Idee?

In jeder Schicht fügen wir ein weiteres Neuron für die Bayes'sche Verschiebung hinzu. Wenn wir also die Funktion aufrufen, um eine Schicht mit 20 Neuronen zu erzeugen, erzeugen wir 21 Neuronen. Und Layer.Total() wird 21 zurückgeben. Aber die Eingabedaten haben nur 20 Elemente. Das letzte bayesianische Neuron hat immer '1' in der Ausgabe. Ich verwende also Layer.Total()-1. In der Schleife verwende ich "<", weil das erste Element des Arrays den Index "0" hat.

 
Guten Abend, ich würde gerne wissen, ob Sie Expert Advisor, Indikatoren oder Skripte erstellen können?
 
MetaQuotes:

Der neue Artikel Neural Networks Made Easy wurde veröffentlicht:

Geschrieben von Dmitriy Gizlyk

Hallo, zum ersten Mal lernen neuronale Netze, Ihr Artikel ist sehr geeignet für mich, aber ich möchte wissen, warum -1 an vielen Stellen benötigt wird, wie zum Beispiel: nextLayer.Total () - 1, so dass es nicht mit der Anzahl der Neuronen in der nächsten Schicht übereinstimmt.

 
Ping You Jiang #:

Hallo, zum ersten Mal lernen neuronales Netz, ist Ihr Artikel sehr geeignet für mich, aber ich möchte wissen, warum -1 an vielen Stellen benötigt wird, wie zum Beispiel: nextLayer. () - 1, so dass es nicht mit der Anzahl der Neuronen in der nächsten Schicht übereinstimmt.

Hallo, das ist normale Arbeit mit Array. Bei mql5 beginnen alle Array-Indizes bei 0. Und nextLayer.Total() gibt die Gesamtzahl der Neuronen zurück. Wenn es also 10 zurückgibt, bedeutet das Elemente des Arrays haben Indizes von 0 bis 9.

 

Ich erhalte einen Kompilierungsfehler, wenn ich die Datei herunterlade.

NeuroNet.mqh

 
Muhammad Saleem #: Ich erhalte tatsächlich einen Kompilierungsfehler, wenn ich die Datei herunterlade.

Versuchen Sie, die Funktion GetPointer zu verwenden.

 
Dmitriy Gizlyk #: Versuchen Sie, die Funktion GetPointer zu verwenden.

Hallo Dmitriy, Vielen Dank für diesen Artikel. Bitte für diesen Fehler, wie kann man es beheben? könnten Sie bitte den korrigierten Code zur Verfügung stellen?

 
Muhammad Saleem #: Ich erhalte tatsächlich einen Kompilierungsfehler, wenn ich die Datei herunterlade.

Hallo Muhammad, hast du diesen Fehler beheben können?