HerrKI mit seinem RoboterHerrKI KI verstehen · nachbauen · anwenden ⭐ 0 XP

Tensor-Operationen

Rechnen mit Tensoren: Addition, Multiplikation, Reshape, Flatten — die Basis für alles.

👋 HerrKI hier — heute bringen wir den Tensoren das Rechnen bei

Im Tensor-Kapitel hast du gesehen: Alles wird zu Zahlenpaketen. Aber ein Paket, das nur herumliegt, nützt niemandem — die eigentliche KI-Arbeit ist, Pakete umzuformen und miteinander zu verrechnen, millionenfach pro Sekunde. Genau diese Handgriffe lernst du jetzt. Und es sind erstaunlich wenige.

Denk an eine Tabelle in Excel: Dieselben Zahlen kannst du als lange Spalte, als 2×3-Block oder quer anordnen — der Inhalt bleibt gleich, nur die Form ändert sich. Und manche Rechnungen klappen nur, wenn die Form stimmt. Bei Tensoren ist es genauso: erst formen (reshape, flatten, transpose), dann rechnen (add, mul, matmul).

🎯 Was du hier lernst:
  • ✅ Wie du Tensoren umformst (reshape, flatten, transpose)
  • ✅ Wie Tensoren miteinander verrechnet werden (add, multiply, matmul)
  • ✅ Warum flatten für neuronale Netze wichtig ist
  • ✅ Was ist der Unterschied zwischen multiply und matmul?

Praxis-Relevanz: Jedes neuronale Netz nutzt diese Operationen ständig! Ein Bild (28×28) wird geflattet zu [784], dann multipliziert mit Gewichten [784, 128] = [128]. Das ist Training - nur Tensor-Operationen! 🧮

💡 HerrKI-Tipp: matmul = Matrix-Multiplikation, multiply = Element-weise! Das ist DER Unterschied, den du kennen musst! [2,3] × [3,4] = [2,4] mit matmul! 🔢

🎥 Video-Erklärungen von HerrKI

Schau dir diese Videos an, um Tensor-Operationen noch besser zu verstehen:

Teil 1: Grundlegende Operationen

Teil 2: Fortgeschrittene Operationen

🔄 Teil 1: Tensor-Transformationen

Tensoren können ihre Form ändern, ohne dass sich die Daten ändern. Das ist wichtig, um sie für verschiedene Operationen vorzubereiten!

1.1 Reshape - Form ändern

Mit reshape kannst du die Form eines Tensors ändern, solange die Gesamtzahl der Elemente gleich bleibt.

Original: Vektor mit 6 Elementen

1
2
3
4
5
6
[6]
↓ reshape([2, 3])

Nach Reshape: Matrix mit 2×3 Elementen

1
2
3
4
5
6
[2, 3]
const tensor = tf.tensor([1, 2, 3, 4, 5, 6]); // Shape: [6] const reshaped = tensor.reshape([2, 3]); // Shape: [2, 3] reshaped.print();

1.2 Flatten - Alles in eine Reihe

Warum ist das wichtig? Neuronale Netze erwarten oft 1D-Eingaben! Ein Bild (z.B. 28×28 Pixel) muss zu einem Vektor [784] "flachgedrückt" werden.

Original: Matrix 3×3

1
2
3
4
5
6
7
8
9
[3, 3]
↓ flatten()

Nach Flatten: Vektor mit 9 Elementen

1
2
3
4
5
6
7
8
9
[9]

🎯 Flatten für Neuronale Netze

Beispiel: Ein 28×28 Graustufenbild hat Shape [28, 28] mit 784 Pixeln.

Ein neuronales Netz mit 784 Eingabe-Neuronen erwartet einen Vektor mit Shape [784].

→ Du musst flatten() verwenden: [28, 28] → [784]

const image = tf.ones([28, 28]); // Bild 28×28 const flattened = image.flatten(); // Vektor [784] console.log(flattened.shape); // [784]

1.3 Transpose - Zeilen ↔ Spalten tauschen

Mit transpose kannst du die Dimensionen eines Tensors vertauschen.

Original: Matrix 2×3

1
2
3
4
5
6
[2, 3]
↓ transpose()

Nach Transpose: Matrix 3×2

1
4
2
5
3
6
[3, 2]
const matrix = tf.tensor2d([[1, 2, 3], [4, 5, 6]]); // [2, 3] const transposed = matrix.transpose(); // [3, 2] transposed.print();

➕ Teil 2: Rechnen mit Tensoren

Jetzt wird es spannend! Wie können wir Tensoren miteinander verrechnen?

🤔 Moment — warum sollte man mit Tensoren überhaupt rechnen wollen?
Erinnerst du dich an „Text & LLMs“? Dort hast du gesehen, dass Wörter zu Vektoren werden — und dass Paare wie König ↔ Königin oder Paris ↔ Frankreich im Zahlenraum ähnliche Abstände haben. Das heißt: Bedeutung verschieben = Vektoren verrechnen. Genau die Operationen, die du gleich lernst, sind das Handwerkszeug dafür — und dieselben Operationen treiben jedes neuronale Netz an. Kein Rechnen um des Rechnens willen: jede Zeile hier hat einen Job in der KI.

2.1 Addition - Element für Element

Tensoren mit gleicher Shape können addiert werden. Jedes Element wird mit dem entsprechenden Element addiert.

1
2
3
[3]
+
10
20
30
[3]
11
22
33
[3]
const a = tf.tensor([1, 2, 3]); const b = tf.tensor([10, 20, 30]); const result = a.add(b); // [11, 22, 33] result.print();
💡 Und genau SO funktioniert „König − Mann + Frau ≈ Königin“!
Stell dir Mini-Embeddings mit nur 2 Achsen vor: [Königlichkeit, Männlichkeit]:
König = [9, 7] · Mann = [1, 7] · Frau = [1, -7]
König.sub(Mann).add(Frau)[9-1+1, 7-7-7] = [9, -7] — und das ist… die Königin! 👑 Elementweise Subtraktion zieht „das Männliche“ ab, elementweise Addition legt „das Weibliche“ drauf. Mit Paris − Frankreich + Deutschland ≈ Berlin klappt derselbe Trick — auf der Latent-Space-Landkarte kannst du solche Rechnungen später live ziehen. In echten Modellen hat der Vektor nicht 2, sondern 768 Achsen — die Rechnung bleibt exakt dieselbe.

2.2 Multiplikation - Element für Element

Auch hier: Element-weise Multiplikation! Nicht verwechseln mit Matrixmultiplikation.

Wofür braucht man das? Zum Gewichten und Maskieren: Multiplizierst du einen Tensor elementweise mit Nullen und Einsen, schaltest du gezielt Werte aus — genau so arbeitet z. B. Dropout, das beim Training zufällige Neuronen auf 0 setzt.

2
3
4
[3]
×
10
20
30
[3]
20
60
120
[3]
const a = tf.tensor([2, 3, 4]); const b = tf.tensor([10, 20, 30]); const result = a.mul(b); // [20, 60, 120] result.print();

2.3 Matrixmultiplikation (matmul) ⭐

Das ist die wichtigste Operation für neuronale Netze! Sie kombiniert Zeilen und Spalten auf mathematische Weise.

Warum ausgerechnet matmul? Weil jede Schicht eines neuronalen Netzes genau EINE Matrixmultiplikation ist: dein Eingabe-Vektor (z. B. das flachgedrückte Bild [784] aus Teil 1) trifft auf die Gewichts-Matrix der Schicht [784, 128] — heraus kommt [128]: die Antworten von 128 Neuronen auf einen Schlag. Jede Spalte der Gewichts-Matrix ist dabei ein komplettes Neuron aus „Was ist ein Neuronales Netz?“ (Gewichte × Eingaben, aufsummiert). Wenn du in Kapitel „Lineare Regression“ gleich dein erstes Netz trainierst, dreht das Training an genau diesen Matrix-Zahlen.

🔍 Regel für Matrixmultiplikation

Matrix A mit Shape [m, n] kann mit Matrix B mit Shape [n, p] multipliziert werden.

Das Ergebnis hat Shape [m, p].

Beispiel: [2, 3] × [3, 2] = [2, 2]

Matrix A: [2, 3]

1
2
3
4
5
6
matmul

Matrix B: [3, 2]

1
2
3
4
5
6

Ergebnis: [2, 2]

22
28
49
64
const A = tf.tensor2d([[1, 2, 3], [4, 5, 6]]); // [2, 3] const B = tf.tensor2d([[1, 2], [3, 4], [5, 6]]); // [3, 2] const result = tf.matMul(A, B); // [2, 2] result.print();

🧠 Kurzer Check — hast du es?

Drei schnelle Fragen, dann bist du durch — klick einfach deine Antwort an:

1. Ändert reshape die Werte eines Tensors?
2. Ein Tensor mit Shape [2, 3] wird geflattet. Welche Shape kommt heraus?
3. Warum ist die Matrix-Multiplikation die wichtigste Operation der KI?

💡 Warum ist matmul so wichtig?

In neuronalen Netzen werden Inputs × Weights mit matmul berechnet!

Beispiel: Ein Batch von 32 Bildern [32, 784] × Gewichte [784, 128] = Output [32, 128]

Merk dir dieses Bild: Wenn du in Kapitel „Lineare Regression“ zum ersten Mal trainierst, ist jede einzelne Vorhersage genau so ein matmul.

📚 Zusammenfassung

🔄 Transformationen

  • reshape - Form ändern
  • flatten - Zu Vektor machen
  • transpose - Dimensionen tauschen

➕ Operationen

  • add - Element-weise Addition
  • mul - Element-weise Multiplikation
  • matMul - Matrixmultiplikation

🧠 Für Neuronale Netze

  • flatten - Für Input Layer
  • matMul - Für Gewichte
  • Shape beachten!

🎯 Das Wichtigste in einem Satz:

Tensoren müssen die richtige Form haben, damit Operationen funktionieren - und flatten ist der Schlüssel, um komplexe Daten in neuronale Netze zu bringen!

Jetzt hast du das komplette Rechen-Werkzeug in der Hand. Als Nächstes setzen wir es zusammen: „Was ist ein Neuronales Netz?“ — dort entdeckst du, dass ein Neuron nichts anderes tut als genau diese Operationen.