Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Faltung: Muster in einem Raster finden

Nach dieser Lektion: Ich kann erklären, wie eine Faltung mit einem Filter Muster in einem Raster findet.

Lektion, 60 Min.2 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Wie ein Netz Muster in Bildern findet

Eine Faltung (englisch Convolution) schiebt einen kleinen Filter über eine Reihe oder ein Bild und rechnet an jeder Stelle eine Summe. So findet ein Netz Kanten, Sprünge und Muster.

Faltungsnetze erkennen damit Gesichter, Ziffern und Fehler auf Fotos. Wir rechnen sie hier von Hand an den Ausleihzahlen einer Woche.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie eine Faltung mit einem Filter Muster in einem Raster findet.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Filtereine kleine Liste von Gewichten, die über die Daten gleitet[-1, 1]
Faltungder Filter gleitet über die Daten und bildet an jeder Stelle eine Summe
Merkmalskartedie Liste der Ergebnisse einer Faltung
Poolingmehrere Nachbarwerte zu einem zusammenfassen
RasterZahlen in Zeilen und Spalten, zum Beispiel ein Bild

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Filter gleitet Schritt für Schritt

Ein Filter ist eine kurze Liste von Gewichten. Er liegt zuerst auf den ersten Werten. Jeder Wert wird mit dem Gewicht darunter multipliziert, und alles wird addiert.

Dann rückt der Filter um eine Stelle weiter und rechnet erneut. Die Ergebnisse bilden die Merkmalskarte. Der Filter [-1, 1] rechnet immer den Nachfolger minus den Wert davor: Er findet Sprünge.

Beispiel: Filter [-1, 1] über sieben Tage

StelleWerte darunterRechnungErgebnis
11 und 1-1 + 10
21 und 2-1 + 21
32 und 6-2 + 64
46 und 6-6 + 60
56 und 2-6 + 2-4
62 und 1-2 + 1-1

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Faltung in Python

Code: python
# Ausleihen einer Woche in Hundert und ein Filter, der Sprünge findet.
reihe = [1, 1, 2, 6, 6, 2, 1]
filter = [-1, 1]
ergebnis = []
for start in range(len(reihe) - len(filter) + 1):
    summe = 0
    for k in range(len(filter)):
        summe = summe + filter[k] * reihe[start + k]
    ergebnis.append(summe)
print(ergebnis)
# Ändern Sie den Filter in [1, 1] und starten Sie erneut.

Die ersten drei Stellen nachrechnen

Befehl
docker exec jupyter python3 -c "print([-1 * 1 + 1 * 1, -1 * 1 + 1 * 2, -1 * 2 + 1 * 6])"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Im Bild gleitet der Filter in zwei Richtungen

Ein Bild ist ein Raster aus Zahlen, zum Beispiel Helligkeiten von 0 bis 1. Der Filter ist dann ebenfalls ein kleines Raster, hier 2 mal 2.

Er gleitet nach rechts und nach unten. An jeder Stelle werden vier Produkte addiert. Im Beispiel liegt links eine dunkle und rechts eine helle Fläche. Der Filter findet die senkrechte Kante.

Beispiel: eine senkrechte Kante

ZeileBild (4 Spalten)Merkmalskarte mit Filter links -1, rechts 1
10, 0, 1, 10, 2, 0
20, 0, 1, 10, 2, 0
30, 0, 1, 10, 2, 0

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Pooling verkleinert die Merkmalskarte

Beim Pooling fasst man Nachbarwerte zusammen. Beim Max-Pooling mit Größe 2 behält man von je zwei Werten den größeren.

Aus [0, 1, 4, 0, -4, -1] wird [1, 4, -1]. Die Karte wird halb so lang, und es bleibt nur das stärkste Signal. Ein Filter hat außerdem immer gleich viele Gewichte, egal wie groß das Bild ist.

Ein Filter gegen eine volle Schicht

Befehl
docker exec jupyter python3 -c "print(28 * 28 * 10 + 10, 3 * 3 + 1)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein Netz müsse den Filter vorher raten. Der Filter besteht aber aus Gewichten, und das Netz lernt sie beim Training selbst. Wir haben [-1, 1] nur gewählt, damit die Rechnung leicht bleibt.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.