Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Neuronales Netz: Die Implementierung Teil1

(0 Bewertungen)

Kommen wir zum schwierigen Teil: Die Implementierung.

 

Für das ganze restliche rundherum hab ich das EA Kitchen Framework genommen. Den aktuellen Source gibts dann immer im dazugehörigen Thread.

 

Die konkrete Implementierung der NN Logik wird in eine Lib ausgelagert. Ich hatte zwar schon mal so eine geschrieben, aber keine Ahnung mehr wo die is. Also nochmal.

 

Das ganze wird jetzt sicher ein bissl hardcore programmiertechnisch, also wems nur ums prinzip geht: besser wegschaun ;)

 

Softwarestruktur

Die Lib wird so aufgebaut das sie genau 1 NN repräsentiert. Sprich es gibt globale variablen in der Lib die Status und Konfiguration speichern, und dann Funktionen für die entsprechenden Zugriffe.

Gespeichert werden muss:

  • Anzahl der Schichten -> integer bzw. direkt über größe des layers array
  • Anzahl der Neuronen pro Schicht -> int-array: layers
  • Definition der Übergangsfunktion pro Neuron -> zweidimensionales array (anzahl schichten x knoten pro schicht)
  • Gewichte pro Verbindung -> wird wohl ein dreidimensionales double array. Ebene 1: layer, ebene 2: neuron am layer Ebene 3: neuron auf nächstem Layer

Nötige Zugriffsfunktionen:

  • Erzeuge NN. Parameter: ,, ,
  • Berechne NN. ,
  • Lade Parameter von File:
  • Speichere in File:
  • Autosave (nimmt filename aus dem geladen wurde
  • Trainiere 1 Schritt: ,

Als Lernalgorithmus werd ich den backpropagation verwenden, einfach weil ich ihn kenne ;)

 

Sprich die Lib wird ein komplett allgemeines NN, das man ggf. auch für ganz andere Varianten verwenden kann. Alle Projektspezifischen Einstellungen werd ich in eine mqh packen die die NN-Lib dann verwendet.

 

Dann geh ich mal an die Implementation der Lib. Mal sehen wie lang es dauert ;)

4 Kommentare

Empfohlene Kommentare

DrStrangelove

Addict

Geschrieben

Hi!

 

Warum nimmst du nicht einfach RapidMiner? Das ist kostenlos, hat fast jeden Lernalgo unter der Sonne eingebaut und kommt direkt mit Auswertungstools und Testtools daher.

Geschrieben

Hauptgrund: weil ichs nicht kannte. Jetzt wo ichs kenne, neuer Hauptgrund: Ich will ja was lernen ;)

 

Im Ernst, einerseits bin ich mir jetzt nicht sicher ob man RapidMiner ohne Probleme vollautomatisieren und an MT anbinden kann, andererseits will ich ein NN mal komplett selber bauen. Fertige Blackboxen sind eben immer noch Blackboxen auch wenn sie viel können. Falls das eigene NN scheitert, kann leicht sein das ich mir den RapidMiner anschaue, aber erstmal bau ichs selber.

DrStrangelove

Addict

Geschrieben

Mein Vorschlag vorhin war nicht als Kritik gedacht, Lernalgos selber zu schreiben um sie besser zu verstehen oder anpassen zu können ist ein Grund den ich als Programmierer nur als zu gut nachvollziehen kann. Abgesehen davon macht es ja auch Spaß ;)

 

Vollautomatisch wird man Rapidminer in MT wohl nicht integrieren können, aber das ist imho auch nicht nötig, in den meisten Fällen will man ja nur das gelernte Modell haben. Ich kann aber nur empfehlen mit Rapidminer mal zu spielen, einfacher kann man andere Lerner wie die SVM nicht testen. Das Programm kann aber am Anfang durch seine Mächtigkeit etwas einschüchternd wirken.

Ich habe selber ein paar Ideen für eine Kombination von NN mit Kursleveln, wenn ich doch nur die Zeit hätte...

Geschrieben

habs auch nicht wirklich als Kritik aufgenommen. Freu mich immer über Input. Fürs Daten analysieren ist RapidMiner dann sicher besser weil mehr Möglichkeiten.

 

Ich will aber auch kein statisches NN machen, sondern es im weiteren Verlauf automatisch "nachlernen" lassen etc. Könnte man in der Praxis dann zwar händisch einmal wöchentlich über RapidMiner spielen, aber ich wills vollautomatisch backtesten auch ;)

Gast
Kommentar schreiben...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.