Einleitung
Einleitung
Download der Kursmaterialien
Installation unserer Python-Umgebung
Was tun wenn: Jupyter startet nicht
Workaround: Tensorflow ist nicht mit Python 3.7 kompatibel
Begriffsklärung (optional): Machine Learning, Neuronale Netze, Deep Learning, AI
Crashkurs: Unsere Python-Umgebung
Crashkurs Jupyter
Crashkurs Python
Crashkurs Numpy
Ein einzelnes Neuron
Ein einzelnes Neuron (Intuition)
Ein einzelnes Neuron (in Python)
Ein einzelnes Neuron mit Bias (Intuition)
Ein einzelnes Neuron mit Bias (in Python)
Aufgabe: Verbrauch von Autos vorhersagen
Musterlösung: Verbrauch von Autos vorhersagen
Aktivierungsfunktion (Intuition)
Aktivierungsfunktion (in Python)
Optionaler Exkurs: Warum lassen sich Neuronen nicht "hintereinanderschalten"?
Neuronales Netz
Wie ist ein Neuronales Netz aufgebaut?
Wie werden die Gewichte aktualisiert? - Teil 1
Wie werden die Gewichte aktualisiert? - Teil 2
Das Gradientenabstiegsverfahren
Stochastic Gradient Descent
So lernt das Netz: Backpropagation - Teil 1
So lernt das Netz: Backpropagation - Teil 2
Neuronales Netz (zur Regression)
Vorstellung: Keras und Tensorflow
Installation von Keras & Tensorflow
Unser Projekt
Unsere Daten
Unser erstes Neuronales Netz
Wir machen eine erste Vorhersage!
Genauigkeit berechnen (manuell)
Genauigkeit berechnen (mit Keras)
Neuronales Netz validieren: Das train/test-Verfahren
Neuronales Netz validieren: Das train/test-Verfahren (mit Keras)
Ein Neuronales Netz mit mehreren Ausgängen
Ein Neuronales Netz mit mehreren Ausgängen (Intuition)
Wie beurteilen wir die Genauigkeit vom Netz?
Wir generieren eine Confusion-Matrix
Wahrscheinlichkeiten vorhersagen: Der Softmax (Intuition)
Wahrscheinlichkeiten vorhersagen: Der Softmax (Keras)
Aktivierungsfunktionen (Intuition)
Aktivierungsfunktionen (mit Keras)
Wie werden die Gewichte optimiert? Optimizer! (Intuition)
Wie werden die Gewichte optimiert? Optimizer! (in Keras)
Wie komplex darf überhaupt unser Netz sein?
Bilderkennung mit Neuronalen Netzen (Convolutional Neural Networks)
Motivation: CNN
Exkurs: Wie ist überhaupt ein Bild aufgebaut?
Wie ist ein Convolutional-Neural-Network aufgebaut?
CNN mit Keras (inkl. Aufgabe)
CNN: Lösungstipps
CNN: Musterlösung
CNN: Wie werden die Gewichte aktualisiert?
CNN: Wir schauen uns ein CNN genauer an: Aktiverungen visualisieren
Grundlage für komplexere CNNs: Wie funktioniert ein MaxPooling-Layer?
Max-Pooling (in Python)
Visualisierung eines CNNs
Wir erhöhen unsere Genauigkeit: Dropout (Intuition)
Wir erhöhen unsere Genauigkeit: Dropout (in Keras)
Komplexe Netze - GPU in der Amazon-Cloud
WICHTIG: Kostenlose GPU möglich?
Einführung: GPU in der Cloud
[Mac only]: Vorbereitung für die nächsten paar Lektionen
Vorbereitung für die Cloud: Exkurs PowerShell / Linux-Shell - Teil 1
Vorbereitung für die Cloud: Exkurs PowerShell / Linux-Shell - Teil 2
Vorstellung EC2: Welche Instanz-Typen kommen für uns in Frage?
[Windows only]: SSH-Keygen not found
Hinweis: Instanz in der Amazon-Cloud anmieten
Wir mieten einen Computer in der Amazon-Cloud an
Jupyter in der Amazon-Cloud
Kursmaterialien in die Cloud übertragen
Was tun bei: ModuleNotFoundError in Jupyter auf der EC2-Instanz?
Tipp: Prozessorauslastung & GPU-Auslastung der EC2-Instanz überwachen
Wichtig: EC2-Instanz stoppen!
Wichtig: Kosten sparen
Kostenlose GPU in der Google-Cloud
Einführung: Kostenlose GPU in der Google-Cloud
Wie verwendest du die kostenlose GPU in der Google-Cloud?
Projekt: Wir erkennen Autos auf einem Bild - Teil 1
Vorstellung: Die Cifar-Daten
Wir trainieren ein Netz auf den Cifar-Daten (Teil 1)
Wir trainieren ein Netz auf den Cifar-Daten (Teil 2)
Wir trainieren ein Netz auf den Cifar-Daten (Teil 3)
Wir trainieren ein Netz auf den Cifar-Daten (Teil 4)
Zusätzliche Daten generieren - Teil 1
Zusätzliche Daten generieren - Teil 2 (optional)
Hinweis zur nächsten Lektion
Wir trainieren das Modell mit den zusätzlichen Daten
Training finalisieren, Modell abspeichern
Projekt: Wir erkennen Autos auf einem Bild - Teil 2
Vorstellung Projekt: Bilderkennung Autos
Grundlagen Bilder verarbeiten: Pillow - Teil 1
Grundlagen Bilder verarbeiten: Pillow - Teil 2
Grundlagen Bilder verarbeiten: Pillow, wir zeichnen in ein Bild - Teil 3
Grundlagen Bilder verarbeiten: Pillow & Numpy - Teil 4
Unser Neuronales Netz findet ein Auto - Teil 1
Unser Neuronales Netz findet ein Auto - Teil 2
Unser Neuronales Netz findet ein Auto - Lösungstipps
Wo genau befindet sich das Auto im Bild? - Teil 1
Wo genau befindet sich das Auto im Bild? - Teil 2
Bilderkennung weiter optimieren - Teil 1
Bilderkennung weiter optimieren - Teil 2
Blick über den Tellerrand: Vorstellung YOLO (Intuition)
YOLO in Python verwenden
Fertige Modelle verwenden: Model Zoo
Einführung: Wie funktioniert ein Model Zoo?
Vorstellung: ImageNet und VGG16 für die Bilderkennung
Wir verwenden das VGG16-Netz
Wir wenden VGG16 an!
Wie verwendest du andere Netze?
Projekt: Model Zoo (Hunde & Katzen voneinander unterscheiden)
Vorstellung Projekt
Download der Projektdateien
Bilder einlesen - Teil 1
Bilder einlesen - Teil 2
Aufgabe: Bilder einlesen
Aufgabe: Modell trainieren
Musterlösung: Modell trainieren
Transfer-Learning mit dem VGG16-Netz (Teil 1)
Transfer-Learning mit dem VGG16-Netz (Teil 2)
Transfer-Learning: So beschleunigen wir die Berechnung
Transfer-Learning: Bugfixes, Modell final trainieren
Aufgabe: Netz auf eigene Daten anwenden
Musterlösung: Netz auf eigene Daten anwenden
Autoencoder
Autoencoder (Intuition)
Autoencoder (in Keras)
Autoencoder: Daten komprimieren - Teil 1
Autoencoder: Daten komprimieren - Teil 2
Bildrauschen entfernen (mit Autoencodern)
Aufgabe: Autoencoder
Praxisprojekt künstlerische Bilder generieren: Der Image Style Transfer
Einführung: Image Style Transfer
Intuition: Image Style Transfer
Wie funktioniert der Image Style Transfer genau?
Warum können wir dafür eine Gram-Matrix verwenden?
Exkurs: Keras Backend (Teil 1)
Exkurs: Keras Backend (Teil 2)
Exkurs: Keras Backend (Teil 3)
Exkurs: Keras Backend (Teil 4)
Quellcode für Image Style Transfer anschauen
Wir erstellen ein Kunstwerk!
Recurrent Neural Networks
Einführung: Was sind RNNs?
Wie funktioniert die zeitliche Komponente bei RNNs?
RNN: Aufbau und Backpropagation
RNN: Das Problem mit dem Exploding / Diminishing Gradient
RNN + LSTM: Damit umgehen wir diese Probleme!
Praxisprojekt: Bitcoin-Kurs vorhersagen
Einführung Projekt: Bitcoin-Kurs vorhersagen
Einlesen der Daten - Teil 1
Einlesen der Daten - Teil 2
Daten für unser Netz (LSTM) vorbereiten - Teil 1
Daten für unser Netz (LSTM) vorbereiten - Teil 2
Modell (LSTM) bauen
Wir sagen den Bitcoin-Kurs vorher!
Datumsangaben auf Grafik korrigieren
Wie müssen wir unsere Ergebnisse interpretieren?
(Optional): Zusätzliche Spalte mit ins Modell einfließen lassen
Praxisprojekt: Text generieren (buchstabenweise)
Vorbereitung der Daten (Teil 1)
Vorbereitung der Daten (Teil 2)
Vorbereitung der Daten (Teil 3)
Wir trainieren die LSTM
Modell abspeichern: Keras & ModelCheckpoint
Modell / Daten aus der Cloud übertragen
Texte generieren - Teil 1
Texte generieren - Teil 2
Texte generieren - Teil 3
Mehrere LSTM-Layer hintereinander
Wie geht es weiter?
Wörter effizient kodieren: Word2Vec
Motivation: Warum brauchen wir Word2Vec überhaupt?
Exkurs: Die One-Hot-Encoding
Wie wurde Word2Vec generiert?
Wir wenden Word2Vec an! - Teil 1
Wir wenden Word2Vec an! - Teil 2
Praxisprojekt: Text generieren (wortweise)
Was erwartet dich in diesem Abschnitt?
Intuition: Wie funktioniert der Embedding-Layer?
Daten vorbereiten - Teil 1
Daten vorbereiten - Teil 2
Daten vorbereiten - Teil 3
Modell trainieren
Faust-Modell trainieren
Exkurs: Was bedeutet "\n"?
Aufgabe: Vorhersagen machen
Text generieren
Text generieren (im Stil von Faust!)
Vorbereitung für Trump-Generator: Crashkurs Webentwicklung
Worum geht es in diesem Exkurs?
Editor einrichten + Crashkurs HTML
Die wichtigsten HTML-Tags
Überschriften und Bilder
Links in HTML
Crashkurs CSS
Crashkurs CSS: Selektoren
Crashkurs CSS: Div und Span
Crashkurs CSS: Separate Datei für unseren CSS-Code
Crashkurs JavaScript: Basics
Crashkurs JavaScript: Listen
Crashkurs JavaScript: Funktionen und Callbacks
Crashkurs JavaScript: jQuery und Callbacks
Crashkurs JavaScript: Promises
Praxisprojekt: Donald Trump Speech Generator
Was erwartet dich in diesem Abschnitt?
Wichtiger Hinweis zum Projekt
Download des kompletten Projektes
Wie ist das Modell trainiert?
Modell nach Tensorflow.js umwandeln
Ein weiterer Hinweis zu diesem Projekt
Projekt anlegen
(Optional): Webseite designen - Teil 1
(Optional): Webseite designen - Teil 2
Tensorflow.js einbinden und laden
Modell einbinden
Entwicklungszeit verkürzen: Verkleinertes Modell generieren
Wir machen eine erste Vorhersage mit Tensorflow.js
Wir generieren ein erstes Wort mit Tensorflow.js
Text generieren
Zeichensetzung optimieren
Text durch Klick auf Button generieren
Memory-Leaks fixen
Ladezeit optimieren: Modell komprimieren
Wir optimieren den Start der Textgenerierung
Text Schritt für Schritt generieren lassen
Problem beheben: Modell korrekt generieren
Wie könnten wir das Projekt noch weiterentwickeln?
Bonus: Reguläre Ausdrücke
Intuition: Reguläre Ausdrücke
Reguläre Ausdrücke in Python (Teil 1)
Reguläre Ausdrücke in Python (Teil 2)
Reguläre Ausdrücke: Beispiel: E-Mails aus einem Text extrahieren
Aufgabe: Reguläre Ausdrücke
Musterlösung: Reguläre Ausdrücke
Flappy-Bird-Klon: Wie ist das Spiel aufgebaut?
Flappy-Bird-Klon starten
Aufbau des Spiels (Teil 1)
Aufbau des Spiels: Die Willkommens-Animation
Das Hauptspiel (Teil 1)
Das Hauptspiel (Teil 2)
Das Hauptspiel (Teil 3)
Das Hauptspiel (Teil 4)
Flappy-Bird-Klon: AI schreiben
Spiel vorbereiten
Wir klinken uns in das Spiel ein
Wie funktioniert Q-Learning?
Was ist die mathematische Idee hinter Q-Learning?
Q-Learning für unseren Flappy-Bird-Klon
Unser Agent führt Aktionen aus
Q-Learning weiter implementieren (Teil 1)
Q-Learning weiter implementieren (Teil 2)
Das Lernen beschleunigen: State komprimieren
Das Spiel beschleunigen
Das Spiel trainieren
Das Spiel ausführen
Vor-und Nachteile von unserem Ansatz
Der Beweis!
Schluss
Wie geht es weiter + Schluss