Tensoren: Die Sprache der GPUs
Tensoren: der Begriff, der einschüchternder klingt, als die Sache ist.
Du kennst bereits Skalare, Vektoren und Matrizen. Aber Deep Learning hört nicht bei 2D auf. Ein Farbbild braucht drei Schichten (Rot, Grün, Blau) — das ist ein 3D-Tensor. Ein Stapel von Bildern fügt eine weitere Dimension hinzu — 4D. Ein Stapel von Videos? 5D.
In diesem Artikel kletterst du die Dimensionsleiter hinauf, verstehst, warum JEDER KI-Input in einen Tensor umgewandelt wird, und lernst, warum GPUs Stapel von Daten verlangen statt einzelner Beispiele.
Die Dimensionsleiter
Tensor
Ein kleines 4x4 RGB-Bild zeigt die Dimensionsleiter in Aktion. Graustufen: eine Matrix mit Form (4, 4) = 16 Werte. Farbe: ein 3D-Tensor mit Form (3, 4, 4) = 48 Werte. Drei Schichten übereinander: Rot, Grün, Blau. Pixel an Position (2, 3): Rot=220, Grün=45, Blau=180 — lila.
import numpy as np
# Skalar (0D)
scalar = np.array(42) # Form: ()
# Vektor (1D)
vector = np.array([1.0, 2.0, 3.0]) # Form: (3,)
# Matrix (2D)
matrix = np.zeros((4, 4)) # Form: (4, 4)
# 3D-Tensor (RGB-Bild)
rgb_image = np.random.randint(0, 256, (3, 4, 4)) # Form: (3, 4, 4)
print(rgb_image.shape) # (3, 4, 4)
print(rgb_image[0, 2, 3]) # Rot-Wert an Position (2,3)Missverständnis: Tensor in Code = Tensor in Physik
In einem 0D-Skalar steckt ein einziger Wert. Aber mit jeder neuen Dimension wächst die Informationsdichte: Ein 768-dimensionaler Vektor kodiert die Bedeutung eines ganzen Wortes, eine Matrix transformiert diese Bedeutung — und ein 4D-Tensor kann 32 Bilder gleichzeitig durch ein neuronales Netz schleusen.
Interaktiv: Drei Sichtweisen auf Tensoren
Tensoren sind abstrakt — aber verschiedene Analogien machen sie greifbar. Wechsle zwischen drei Sichtweisen, um zu verstehen, was ein Tensor ist: ein Datenwürfel zum Stapeln, eine mathematische Transformation oder ein nummerierter Zahlenspeicher.
Was ist ein Tensor?
Ein Tensor ist die grundlegende Datenstruktur in modernen KI-Systemen. Doch je nach Blickwinkel lassen sich Tensoren ganz unterschiedlich verstehen. Wechsle zwischen drei Analogien, um verschiedene Perspektiven zu erleben.
Tensor als mehrdimensionaler Datenwürfel
Stell dir einen Tensor als Container vor, der Zahlen in mehreren Dimensionen organisiert. Ein Skalar ist ein einzelner Punkt. Ein Vektor ist eine Linie von Zahlen. Eine Matrix ist ein Blatt mit Zeilen und Spalten. Ein 3D-Tensor ist ein Würfel. Und es geht weiter: ein 4D-Tensor ist ein Regal voller Würfel.
Ein Farbbild mit 256 x 256 Pixeln wird als Rang-3-Tensor gespeichert: [3, 256, 256] — drei Farbkanäle (Rot, Grün, Blau), Höhe und Breite. Ein Batch von 32 Bildern ergibt einen Rang-4-Tensor: [32, 3, 256, 256].
Tensor-Dimensionen im Vergleich
| Rang | Mathematik | Datenwürfel | KI-Beispiel |
|---|---|---|---|
| 0 | Skalar | Einzelner Punkt | Lernrate: 0.001 |
| 1 | Vektor | Linie von Zahlen | Word Embedding: [768] |
| 2 | Matrix | Blatt mit Zeilen + Spalten | Gewichtsmatrix: [768, 512] |
| 3 | 3D-Tensor | Würfel von Zahlen | Farbbild: [3, 256, 256] |
| 4 | 4D-Tensor | Regal voller Würfel | Bild-Batch: [32, 3, 256, 256] |
Warum ML in Tensoren denkt
GPUs und TPUs verarbeiten dichte, numerische Arrays mit fester Größe und vektorisierten Instruktionen. Deshalb muss JEDER Input — Bild, Text, Audio, Tabelle — in einen Tensor mit definierter Form übersetzt werden. Die GPU spricht nur eine Sprache: Tensor.
Die Form sagt dir zusammen mit der Konvention (etwa Channels First), was jede Dimension bedeutet. Falsche Form = falsche Interpretation = Bugs oder unsinnige Ergebnisse. Die Form eines Tensors ist das wichtigste Stück Metadaten im Deep Learning.
Shape-Fehler: ein Dauerbrenner im Deep Learning
Warum feste Größe? GPUs müssen das Speicher-Layout im Voraus kennen. Inputs mit variabler Länge werden auf eine feste Maximallänge aufgefüllt (Padding) oder abgeschnitten (Truncation).
Deep Dive: Channels First vs. Channels Last
Deep Dive: Tensor vs. NumPy-Array
Batching: Die GPU füttern
GPUs haben Tausende von Kernen, die alle dieselbe Operation auf verschiedenen Daten gleichzeitig ausführen (SIMD — Single Instruction, Multiple Data). Ein einzelnes Bild zu verarbeiten verschwendet die meisten Kerne. Deshalb wird die Batch-Dimension vorangestellt.
Drei Gründe für Batching
GPU-Auslastung: Alle Kerne gleichzeitig beschäftigt. Ein einzelnes Bild nutzt nur einen Bruchteil der verfügbaren Rechenleistung.
Statistische Stabilität: Der Gradient, gemittelt über einen Batch, ist weniger verrauscht als der Gradient eines einzelnen Beispiels. Das Training konvergiert gleichmäßiger.
Trade-off: Größerer Batch = bessere GPU-Nutzung, aber mehr Speicherverbrauch. Batch-Größe ist ein kritischer Hyperparameter.
Shape-Progression
import torch
# Einzelnes Bild: Form (3, 256, 256)
img = torch.randn(3, 256, 256)
# Batch von 32 Bildern: Form (32, 3, 256, 256)
batch = torch.stack([torch.randn(3, 256, 256) for _ in range(32)])
print(batch.shape) # torch.Size([32, 3, 256, 256])
# Speicher: 32 * 3 * 256 * 256 * 4 Bytes = ~25 MBMissverständnis: Größerer Batch = immer besser
Kernaussagen
Quiz: Tensoren
Lernziele
- Ein RGB-Bild hat 128x128 Pixel. Welche Form hat der Tensor (Channels First), und wie viele einzelne Werte enthält er?
- Warum muss ein Textabsatz in einen Tensor umgewandelt werden, bevor ein neuronales Netz ihn verarbeiten kann — und welche Information geht dabei verloren?
- Du hast einen Batch von 16 RGB-Bildern mit 224x224 Pixeln. Welche Form hat der Tensor, und warum verarbeitet die GPU nicht ein Bild nach dem anderen?