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

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
Neuer Artikel Neuronale Netze leicht gemacht (Teil 5): Parallele Berechnungen mit OpenCL :
Wir haben bereits einige Arten von Implementierungen neuronaler Netze besprochen. In den betrachteten Netzwerken werden die gleichen Operationen für jedes Neuron wiederholt. Ein logischer weiterer Schritt ist die Nutzung der parallelen Berechnung, die die moderne Technologie bietet, um den Lernprozess des neuronalen Netzwerks zu beschleunigen. Eine der möglichen Implementierungen wird in diesem Artikel beschrieben.
Wir haben die Technologie ausgewählt. Jetzt müssen wir über den Prozess der Aufteilung der Berechnungen in Threads entscheiden. Erinnern Sie sich an den Algorithmus des vollständig verbundenen Perceptrons bei einem feed-forward Durchlauf? Das Signal bewegt sich sequentiell von der Eingabeschicht zu den versteckten Schichten und dann zur Ausgabeschicht. Es macht keinen Sinn, für jede Schicht einen Thread zuzuweisen, da die Berechnungen sequentiell durchgeführt werden müssen. Die Berechnung einer Schicht kann erst beginnen, wenn das Ergebnis der vorherigen Schicht vorliegt. Die Berechnung eines einzelnen Neurons in einer Schicht hängt nicht von den Berechnungsergebnissen der anderen Neuronen in dieser Schicht ab. Das bedeutet, dass wir für jedes Neuron separate Threads zuweisen und alle Neuronen einer Schicht zur parallelen Berechnung schicken können.
Wenn man auf die Operationen eines Neurons heruntergeht, könnte man die Möglichkeit der Parallelisierung der Berechnung der Produkte der Eingangswerte mit ihren Gewichtskoeffizienten in Betracht ziehen. Die weitere Summierung der resultierenden Werte und die Berechnung des Wertes der Aktivierungsfunktion werden jedoch in einem einzigen Thread zusammengefasst. Ich habe mich entschieden, diese Operationen in einem einzigen OpenCL-Kernel unter Verwendung von Vektorfunktionen zu implementieren.
Autor: Dmitriy Gizlyk