Eine schnelle und kostenlose Bibliothek für MT4, sehr zur Freude der Neuralnetworker - Seite 15

 
lasso >> :

Ich füge hinzu. Oder im Falle eines Absturzes des Terminals. Aber es scheint eine Lösung gefunden worden zu sein.

Die Frage ist eine andere. Vladislav, Sie scheinen C++-Code ohne "Zwischenhändler" zu lesen.

Könnten Sie sich zu dem Problem der identischen Antworten des Netzausschusses und der korrekten Initialisierung der Gewichtungswerte äußern? (ausführlicher hier und weitere Protokolle, und hier eine Frage zu Gewichten)

Ich habe mir die Codes angesehen. Die Randomisierung ist vorhanden. Was nicht: da Standard-C/C++ einen Quasi-Zufallszahlengenerator hat, wird empfohlen, den Kernel neu zu initialisieren (seed - srand(int ) - move reference point vor jedem Aufruf von rand())

int rand( void );
  Return Value 
rand returns a pseudorandom number, as described above. There is no error return.

  Remarks 
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). 
Use the srand function to seed the pseudorandom- number generator before calling rand.

//------------------------------------------------

Sets a random starting point.


void srand(
   unsigned int seed 
);
  Parameters 
seed
Seed for random- number generation

  Remarks 
The srand function sets the starting point for generating a series of pseudorandom integers in the current thread. 
To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random 
starting point. rand retrieves the pseudorandom numbers that are generated. 
Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

  


 
Henry_White писал(а) >>

Ja. Die Eingaben sind für jedes Netz unterschiedlich, was aber nicht entscheidend ist. Sie können ein Standardsignal nehmen, z.B. den gleichen RSI und ein Raster, und trotzdem negative Werte an allen Eingängen der Bruteforce erhalten.

Initiale Initialisierung der Skalen -1, 1.

Über das Profil... Meinen Sie die Ergebnisdatei von trained net?

Nein. Wir sprechen über unterschiedliche Dinge. Ich habe Sie nach Outputs gefragt !? Bitte schauen Sie sich das hier an. D.h. wir haben einen Ausschuss von 16 Netzen, initialisieren sie mit zufälligen Gewichten, legen einen einzelnen &input_vector[] an jeden Eingang und als Ergebnis sind die Ausgaben die gleichen! (unter dem Link sind alle Protokolle aufgeführt).

Hier ist die Frage!!!

........

Ja. Die Ergebnisdatei des trainierten Netzwerks finden Sie hier oder per E-Mail an ..... Interessiert an den Werten der Gewichte. Es wäre auch gut, ein Profil des Netzes direkt nach der Initialisierung, ohne Training, zu haben. >> OK?

 
lasso >> :

Nein. Wir reden über verschiedene Dinge. Ich habe Sie nach den Ausgängen gefragt!? Bitte greifen Sie hier zu. D.h. wir haben ein Komitee von 16 Netzen, initialisieren sie mit zufälligen Gewichten, legen einen einzelnen &input_vector[] an jeden Eingang, als Ergebnis sind die Ausgaben die gleichen!!! (unter dem Link sind alle Protokolle aufgeführt).

Hier ist die Frage!!!

........

Ja. Die Ergebnisdatei des trainierten Netzwerks finden Sie hier oder per E-Mail an ..... Interessiert an den Werten der Gewichte. Es wäre auch gut, ein Profil des Netzes direkt nach der Initialisierung, ohne Training, zu haben. Ist das in Ordnung?

Wir reden wirklich über verschiedene Dinge )) Ich verstehe Ihr Problem. Ich habe es überprüft. Und bestätigte, dass dieser Effekt tatsächlich vorhanden ist.

In meinem letzten Beitrag schrieb ich "Eine weitere Merkwürdigkeit", was bedeutet, dass sie nichts mit dem Problem der Randomisierung der Anfangsgewichte und der Identität der Operation der Ausschussmaschen mit einem einzigen Eingangsvektor zu tun hat.

Ich will damit sagen, dass bei redundantem Lernen (obwohl der Effekt auch bei normalem Lernen auftritt), mit, laut MSE, positiver Konvergenz, das Netz kein absolutes Minimum "findet", und nicht einmal ein lokales, sondern banal an die Bereichsgrenze rollt, was auf ein Problem im Lernalgorithmus hinweist...

 

Übrigens, ich habe die Initialisierung der Anfangsgewichte überprüft (unmittelbar nach der Erstellung aufgezeichnet). Alles funktioniert. Die Randomisierung ist vorhanden.

Aber hier ist ein seltsamer Eintrag, den ich im Profil gefunden habe:

layer_sizes=31 31 17 2

Und dies bei:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); mit AnnInputs=30

Die ausgeblendeten Schichten sind aus irgendeinem Grund eine mehr angegeben als deklariert. Was mich aber noch mehr verwirrt, ist die Größe der Ausgabeschicht "2", wenn "1" angegeben ist!!!

 
Henry_White >> :

Übrigens, ich habe die Initialisierung der Anfangsgewichte überprüft (unmittelbar nach der Erstellung aufgezeichnet). Alles funktioniert. Die Randomisierung ist vorhanden.

Aber hier ist ein seltsamer Eintrag, den ich im Profil gefunden habe:

layer_sizes=31 31 17 2

Und dies bei:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); when AnnInputs=30

Aus irgendeinem Grund gibt es eine versteckte Schicht mehr als angegeben. Was mich aber noch mehr verwirrt, ist die Größe der Ausgabeschicht "2", wenn "1" angegeben wird!!!

Dort ist alles korrekt. Es gibt insgesamt 4 Schichten: Eingabeschicht, 2 versteckte Schichten, Ausgabeschicht. Jede Schicht hat einen Bias = 1, sie nimmt nicht an der Dimension "Benutzer" teil. Dies ist der FANN-Dokumentation entnommen.


Viel Glück!

 
Ja, ich habe von Vorurteilen gelesen... Aber ich habe nichts davon gesehen, dass es im Profil des Netzes erscheint. Vielleicht haben Sie Recht und es handelt sich wirklich um ein zusätzliches Feedback-Neuron. Jedenfalls würde das logischerweise die zunehmende Anzahl von Schichten erklären... Und ich war schon froh, dass ich einen Hinweis auf das "Wegschwimmen" des Netzes an der Grenze des Bereichs gefunden habe )))
 
Henry_White писал(а) >>

Übrigens, ich habe die Initialisierung der Anfangsgewichte überprüft (unmittelbar nach der Erstellung aufgezeichnet). Alles funktioniert. Es gibt eine Randomisierung.

Ja, die Gewichte werden nach dem Zufallsprinzip verteilt. Aber ich wiederhole mich trotzdem:

Zur Kenntnis genommen. Die Randomisierung ist -1 bis 1, und im Netzprofil sind die Gewichte -10.0e--003 bis 10.0e-003

Beispiel: (12, -7,35577636217311400000e-003) (13, 7,639700053449810000e-002)

Ist dies richtig?

Deshalb habe ich Sie gebeten, Ihre Netzwerkprofile zu zeigen: ....

 
lasso >> :

Ja, die Randomisierung der Skalen ist vorhanden. Aber ich sage es noch einmal:

Zur Kenntnis genommen. Die Randomisierung geht von -1 bis 1, und im Netzprofil liegen die Gewichte zwischen -10,0e--003 und 10,0e-003

Beispiel: (12, -7,35577636217311400000e-003) (13, 7,639700053449810000e-002)

Ist dies richtig?

Deshalb habe ich Sie gebeten, Ihre Netzwerkprofile zu zeigen: ....

Geprüft - meine Werte sind unterschiedlich und fast gleichmäßig gestreut. Hier ist eine der Initialisierungen:

connections (connected_to_neuron, weight)=(0, -9.946899414062500000000e-001) (1, -6.88415527343750000e-001) (2, 6.51367187500000000e-001) (3, -8.2067871093750000e-001) (4, 9.83703613281250000e-001) (5, -6.84936523437500000000e-001) (6, 3.6010742187500000000e-001) (7, 2.90527343750000e-001) (8, 7.546386718750000e-001) (9, -7.60314941406250000e-001) (10, -7.78137207031250000e-001) (11, 7554321289062500000000e-001) (12, -6.61560058593750000e-001) (13, 1.657714843750000e-001) (14, 5.710449218750000e-001) (15, -1.54785156250000e-001) (16, 9.851074218750000e-002) (17, -5.269165039062500000000e-001) (18, 8.58947753906250000e-001) (19, -5.6652832031250000e-001) (20, 7.3144531250000e-001) (21, -8.80310058593750000e-001) (22, 6.823730468750000e-002)

................................................................................................................................................................................................................................

(42, -6.953735351562500000000e-001) (43, -7.0153808593750000e-001) (44, -7.38952636718750000e-001) (45, -3.44238281250000e-002) (46, -1.994018554687500000000e-001) (47, 2.73132324218750000e-001) (48, 4.53186035156250000e-001) (49, -4.709472656250000e-001) (50, -7.741699218750000e-001) (51, -9.54711914062500000000e-001) (52, 8.09509277343750000e-001) (53, 9.92370605468750000e-001) (54, -4.13391113281250000e-001) (55, 6.672973632812500000000e-001) (56, 9.59289550781250000e-001) (57, 1.0925292968750000e-001) (58, -3.02551269531250000e-001) (59, -5.29785156250000e-001) (60, 5.857543945312500000000e-001) (61, 7.999877929968750000e-001) (62, -1.11999511718750000e-001) (63, -8.0749511718750000e-001) (64, -7.08862304687500000000e-001) (65, 8.05236816406250000e-001) (66, 2.9260253906250000e-001) (67, 3.6163333300781250000e-001) (68, -2.99011230468750000e-001) (69, 6.248168945312500000000e-001) (70, -7.15759277343750000e-001) (71, -7.5720214843750000e-001) (72, -1.31774902343750000e-001) (73, 5.53894042968750000e-001) (74, -3.85009765625000000000000e-001) (75, -3.3361816406250000e-001) (76, -9.587402343750000e-001) (77, -3.70544433593750000e-001) (78, 8.2690429468750000e-001)


SZZ Die Wahrheit stellt die Bibliothek selbst zusammen. Etwas anders als f2M. Obwohl, die Ideologie des Autors von f2M gefiel mir und führte zu einer ähnlichen Ansicht. Ich habe heute die Neuinitialisierung des Generators hinzugefügt - ich weiß nicht, inwieweit das Auswirkungen hat.


 
VladislavVG писал(а) >>

Geprüft - meine Werte sind unterschiedlich und fast gleichmäßig gestreut. Hier ist eine der Initialisierungen:

Ihre Gewichte sind mehr als korrekt, aber was sind die Werte der Netzausgänge, wenn der Eingangsvektor derselbe ist?

 
lasso >> :

Ihre Gewichte sind mehr als korrekt, aber was sind die Netzausgänge für den gleichen Eingangsvektor?

Ich habe noch nicht alles vollständig getestet - solange der Optimierungstester läuft. Ich möchte sie nicht unterbrechen.

Ich kann dll, mqh und EA anhängen - es gibt einige Unterschiede zu den Originalen, vielleicht wird es schneller gehen, es zum Laufen zu bringen.

Grund der Beschwerde: