Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 5): Parallele Berechnungen mit OpenCL" - Seite 5
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hallo, Sie brauchen die .cl-Datei nicht zu installieren. Du lädst sie einfach in das Hauptprogramm als String
Edit(SOLVED): Obwohl es scheint, dass AMD die Unterstützung von OpenCL aufgegeben hat, gibt es ein kostenloses Microsoft OpenCL und OpenGL Compatibility Pack und es kompiliert jetzt.
Guten Tag Dmitry, vielen Dank für Ihre Veröffentlichungen, die mir sehr geholfen haben, meine Kenntnisse in der Entwicklung zu verbessern. Für Ihre Ratschläge wäre ich Ihnen sehr dankbar. Ich studiere gerade den Artikel über Multithreading (#5). Ich habe versucht, eine kompilierte Datei aus den Anhängen auszuführen, sie läuft nicht und bringt das ganze Terminal zum Absturz. Ich habe versucht, sie aus den Quellen neu zu kompilieren, das Ergebnis ist das gleiche, was mich zu der Annahme bringt, dass es nicht an den Quellen liegt. Ich habe versucht, es auf dem Testgerät laufen zu lassen: es stürzt ab, wenn die CNet::backPropOCL-Methode in Zeile 1486 aufgerufen wird (neuron.calcHiddenGradients(nextLayer.At(0));), und dort bereits bei einer vordefinierten Funktion aus dem OpenCL-Katalog (CLExecute(kernel_handle,work_dim,work_offset,work_size)). Das Interessanteste ist, dass es keinen Fehler in den Protokollen gibt, aber der Tester stürzt auch ab. Können Sie mir sagen, woran das liegen kann? Vielen Dank!
Wenn ich es richtig verstehe, stürzt es ab, wenn das OpenCL-Programm läuft. Versuchen Sie, das Programm im Debug-Modus laufen zu lassen und schauen Sie sich die Größen der übertragenen Puffer an. Vielleicht liegt der Fehler in der Arrayüberschreitung im OpenCL-Programm.
Hallo Tobias,
Kopiere einfach die .cl Datei (aus den Downloads) und füge sie in den "include" Ordner im Meta Editor ein. Der Compiler wird sie finden.
Vielen Dank
In der Methode "bool CNeuron::feedForward(CLayer *prevLayer)", der Datei "NeuroNet.mqh", gibt es eine Zeile:
"outputVal=activationFunction(MathMin(MathMax(sum,-18),18));"
Ich verstehe nicht, warum das Ergebnis der Aktivierungsfunktion von -18 bis 18 geht, sollte es nicht von -1 bis 1 oder von 0 bis 1 gehen?
Ich verstehe nicht, warum das Ergebnis der Aktivierungsfunktion von -18 bis 18 geht, sollte es nicht von -1 bis 1 oder von 0 bis 1 gehen?
Dies schränkt das Argument der Aktivierungsfunktion ein, nicht ihren Wert. Dies wurde hinzugefügt, damit der Gradient der Aktivierungsfunktion nicht auf Werte nahe 0 getrieben wird.
Können Sie mir bitte sagen, ob recentAverageSmoothingFactor = 10000 auf 2 Jahren basiert?
365 Tage * 2 Jahre * 24 Stunden = 17.520 Stundenkerzen (Stichprobenlänge).
Ich verwende eine Stichprobe von 1 Jahr, dann muss ich auf 8.760 reduzieren (365 * 24 = 8.760)?
In Tests springt dForecast von 0 auf 23, und der Fehler ist 0,32 und bleibt konstant, ist das normal oder liegt es daran, dass recentAverageSmoothingFactor falsch ist? 😀
Hallo Dimitri,
Ich liebe deine Artikel und ich fange an, daran zu arbeiten.
Wo ist die CBuffer-Klasse? Ich kann es nicht finden.
Beste grüße,
Benjamin
Hallo Dimitri,
Ich liebe deine Artikel und ich fange an, daran zu arbeiten.
Wo ist die CBuffer-Klasse? Ich kann es nicht finden.
Beste grüße,
Benjamin
Egal, ich habe die Lösung gefunden, es in CBufferFloat zu ändern, wie von Ihnen in anderen Artikeln beschrieben :)