Einbindung eines neuronalen Netzes in eine Apex Anwendung, Berlin am
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 3
Der Vortrag basiert großteils auf den Arbeiten von Matt Mazur Email: Twitter: Blog: Matthew.H.Mazur@gmail.com @mhmazur https://mattmazur.com Netz App: http://www.emergentmind.com/neural-network Seite 4
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 5
Das Unternehmen - VERBUND auf einen Blick 95 % der Erzeugung aus Erneuerbaren Energien Rund 3.000 Mitarbeiterinnen und Mitarbeiter 126 Wasserkraftwerke Nummer 1 beim Klimaschutz unter europäischen EVUs Österreichs führendes Stromunternehmen Strategischer Fokus auf Über 300.000 Privatkunden. Nr. 1 bei Industriekunden. Erste Green-Bond-Unternehmensanleihe im deutschprachigen Raum Österreich und Deutschland Größter Wasserkrafterzeuger Bayerns 51% im Besitz der Republik Österreich Österreichweite Ladeinfrastruktur 234 Lehrlinge seit 2009 ausgebildet für Elektrofahrzeuge geschaffen Energienahe Produkte & Dienstleistungen Soziale Verantwortung: 1,3 Mio. Unterstützung für VERBUND- Stromhilfefonds der Caritas seit 2009 Ökologische Maßnahmen: Bisher 186 Mio. Investition in Fischwanderhilfen Starkes Umweltmanagement: In den Top 10 von weltweit 160 analysierten Energieunternehmen bei oekom research Seite 6
Entscheidungsunterstützung durch Wiedererkennung von Szenarien aus der Vergangenheit 40 35 30 25 20 15 10 Kaufen oder verkaufen? Wie hoch steigt der Preis? 5 0 Kommt eine Trendwende? Jän Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez Seite 7
Warum Apex? Warum Javascript? Weil eine schnelle prototypische Entwicklung gefragt war Weil wir agil die Methode testen wollten, vor der Entwicklung eines kompletten Systems Weil wir keine Blackbox in Form von Bibliotheken bei der Analyse des Verfahrens haben wollten Weil wir die Quelldaten in Oracle haben Weil es im Netz schon einen guten Grundstock gab, ohne das Rad neu zu erfinden und weil wir einfach gerne mit Apex und Javascript arbeiten! Seite 8
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 9
Was haben wir gebaut? Demo! http://www.emergentmind.com/neural-network Seite 10
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 11
Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Installation von Oracle Virtualbox https://www.virtualbox.org/ Download der Pre-Built Developer VM von Oracle http://www.oracle.com/technetwork/community/developer-vm/index.html Es ist ein Apex 5, eventuell patchen Seite 12
Virtual Image konfigurieren Netzwerk NAT und Portfreigabe einrichten Apex ORDS auf Port 8080 TNS Listener auf Port 1521 zum Connect per SQL-Developer auf Host SSH auf Port 22 Seite 13
Konfiguration der 12c Datenbank in der Virtual Machine Falls die User expired sind: Ergebnis der Ausgabe kopieren und laufen lassen Seite 14
Einstieg in das Apex der Virtualbox http://localhost:8080/ords Workspace User Passwort OBE OBE oracle http://localhost:8080/ords/apex_admin User Passwort SECURE oracle Seite 15
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 16
Externe Seite analysieren Seite auf die lokale Platte speichern HTML Datei ansehen Verweise auf externe Dateien werden lokal abgespeichert Seite 17
Externe Seite analysieren JS Dateien öffnen und ermitteln, was drinnen ist Dateien umbenennen und Links im HTML ändern Geht noch alles? 1. Analytics, 26 kb, JS 2. JQuery, jqueryui, sparkline, physics.js, underscore, + weiteres JS, 648 kb, JS 3. Das Neuronale Netz, 15 kb, JS 4. jqueryui, 48kb, CSS 5. Canvas der Netzvisualisierung, 2 kb, JS 6. Schriftartendesign, 3 kb, CSS 7. Schriftartendesign, 25 kb, JS 8. Schriftartendesign, 90 kb, CSS 9. Neuronales Netz Design, 2kb, CSS Seite 18
JS Dateien analysieren JS Dateien im Notepad++ öffnen Sprache auf JS einstellen Zeilenumbruch ausschalten Funktionsblöcke zusammenklappen Kommentare lesen Wenn kein Kommentar: Codeteile googeln! jquery (und jqueryui) lieber rausgeben, da das von Apex schon selbst mitgebracht wird Seite 19
Einbau der JS und CSS Teile in Apex Es gibt Bereiche in der Page, die für JS und CSS vorbereitet sind Größe der Felder ist beschränkt, daher auf Files ausweichen Files hochladen, in Apex 5 auch gezipped möglich Seite 20
Einbau der HTML Teile in Apex Schematischer Aufbau der HTML Seite Seite 21
Einbau der HTML Teile in Apex Einbau des DIV als HTML-Region in Apex Seite 22
Nachbau der externen HTML Seite mit JS erfolgreich! DEMO! Seite 23
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 24
Code des neuronalen Netzes für Ihre Zwecke erweitern Was soll am Code erweitert werden o Über Apex die Anzahl der Zwischenschichten bestimmen o Über Apex die Anzahl der Neuronen pro Zwischenschicht bestimmen Arbeitsumgebung verbessern o Kein JS Code Hochladen per Apex nach jeder Änderung im JS Code Seite 25
Arbeitsumgebung verbessern vor Änderungen an JS Vom Virtualbox Image aus auf Host-Laufwerk zugreifen dort liegt der JS Code Seite 26
Anzahl der Zwischenschichten über Apex bestimmen Einbau eines Elements in der Seite, welches die Information über die Zwischenschichten hält Seite 27
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 28
Trainingsdaten generieren Pixelgrafik zu String aus 0 und 1 umwandeln Seite 29
Trainingsdaten generieren Pixelgrafik zu String aus 0 und 1 umwandeln Pixelgrafik ist eine HTML Table mit ID = drawpad Zelle nach Click per CSS Klasse einfärben Dazu Apex triggeringelement verwenden Seite 30
Trainingsdaten in das Netz laden Nach dem Page Load die Trainingsdaten laden (JS -> Ajax -> PLSQL -> JS) Das Netz starten Den BarChart zur Output Visualisierung initialisieren Seite 31
Trainingsdaten in das Netz laden Nach dem Page Load die Trainingsdaten laden (JS -> Ajax -> PLSQL -> JS) Man könnte trainingsdata oder testdata laden Testdata wäre ungelerntes, machen wir interaktiv CLOB wird als Ganzes geladen, aber stückweise ausgegeben Seite 32
Inputdatenstring zu JSON Funktion, die einen CLOB zurück gibt, der einem JSON String entspricht Seite 33
Was Sie in diesem Vortrag lernen werden: Wer wir sind und warum wir das machen Was wir gebaut haben Wie Sie sich eine lokale Apex 5 Arbeitsumgebung schnellstmöglich einrichten Wie Sie eine externe Seite analysieren, zerlegen und in Ihr Apex einbinden Wie Sie den Code des neuronalen Netzes für Ihre Zwecke erweitern Wie Sie Trainingsdaten erstellen, speichern und in Ihr Netz laden können Wie Sie Ihr trainiertes Netz abspeichern und wieder laden können. und das alles anhand einer funktionierenden Live Demo! Seite 34
Trainiertes Netz abspeichern 1. Die komplette Datenstruktur des Netzes in einen JS-String umwandeln 2. Den JS-String in einen APEX Collection CLOB speichern 3. Den PLSQL Prozess PRC_SAVE_NET aufrufen, dem die Struktur der Hiddenlayer übergeben wird in x01 Seite 35
Trainiertes Netz abspeichern 1. Den CLOB aus der Collection in eine lokale CLOB Variable speichern 2. Den String der Struktur der Hiddenlayer als Key verwenden 3. Merge in die Tabelle NEURALNET Seite 36
Trainiertes Netz laden 1. Aus der Tabelle NEURALNET das gespeicherte Netz für diese Hiddenlayer Struktur laden Seite 37
Trainiertes Netz laden 1. Apex Collection Clob JS-String JS Objekt 2. JS Objekt Gewichte und Bias ins Neuronale Netz übernehmen Seite 38
Was haben wir gebaut? Demo! http://www.emergentmind.com/neural-network Seite 39
Question & Answer Discussion Area in Jazz 2 You don't have to put an abrupt stop to exciting discussions at the end of a talk: In Room "Jazz 2" you can keep conversation going. Bitte geben Sie VERBUND den Fußzeilentext AG, www.verbund.com über "Einfügen -> Kopf- & Fußzeile" ein 40 18.08.2015