Die eine Namenskonvention, die deinen Machine Learning Code revolutioniert

Die eine Namenskonvention, die deinen Machine Learning Code revolutioniert

Jun 19, 2026 machine learning python coding best practices deep learning software development

Shape Suffixes: Der einfachste Trick für lesbare ML-Codes

Du kennst das wahrscheinlich: Da sitzt du vor einem Stack Trace oder einem Notebook voller Variablen wie outputs, activations oder x_temp_2. Und die alles entscheidende Frage stellt sich sofort — war das jetzt batch-first oder batch-last? Ist die Sequence-Dimension noch drin?

Genau hier kommen Shape Suffixes ins Spiel.

Was steckt hinter Shape Suffixes?

Die Idee ist simpel: Du hängst kleine Buchstaben-Codes an deine Tensor-Variablennamen, die dir auf einen Blick verraten, welche Dimensionen der Tensor hat.

Statt outputs schreibst du outputs_bc. Statt activations eben activations_bcn.

Klingt nach mehr Tipparbeit? Glaub mir — das Gegenteil ist der Fall. Dieser eine Kniff spart dir unglaublich viel Debugging-Zeit.

Das Dimensions-Alphabet

Hier ist das Standard-Repertoire für Tensor-Dimensionen:

  • b — Batch-Dimension
  • p — Position oder Sequence-Index
  • n — Neuron-Dimension (typischerweise das Ergebnis einer Gewichtsmatrix-Multiplikation)
  • c — Channel-Dimension
  • h — Höhe (bei Bild-Tensoren)
  • w — Breite (bei Bild-Tensoren)
  • d — Tiefe (bei 3D-Daten)
  • k — Kernel-Dimension

Mit diesem Wissen liest sich logits_bc sofort: Batch von Logits mit Channel-Dimension — ideal für Klassifikationsaufgaben. Und positional_embeddings_bpn verrät dir: Batch, Position, Neuron, in genau dieser Reihenfolge.

Warum sich dieser Aufwand lohnt

Sofortige Orientierung. Bei probs_bc weißt du instant, dass es sich um Wahrscheinlichkeiten handelt, organisiert nach Batch und Klasse. Kein Raten, kein Docstring-Wühlen.

Eingebauter Fehler-Detektor. Hier wird es richtig stark. Wenn du schreibst:

outputs_bc = torch.matmul(activations_bcn, weights_bcn)

Dann springt dir der Fehler sofort ins Auge. Die Gewichtsmatrix müsste eigentlich weights_nc heißen, um korrekt mit activations_bcn multipliziert zu werden. Die Variablennamen selbst werden zum Shape-Checker.

Dokumentation, die sich selbst pflegt. Kommentare veralten — niemand aktualisiert sie, wenn Code refactored wird. Aber embeddings_bpn bleibt akkurat, solange du die Konvention einhältst. Weil der Variablenname selbst zur Dokumentation wird.

Entspanntere Code Reviews. Reviewer erkennen Dimensions-Fehler in Pull Requests, ohne Code auszuführen oder durch Funktionsaufrufe zu steppen. Das spart allen Zeit und erwischt Bugs früher.

Patterns für den Alltag

Bei Concatenations und Stacks: Wenn du Tensoren kombinierst, passe den Suffix an die neue Struktur an. Zwei features_bc entlang einer neuen Dimension stacken? Dann wird daraus features_bck oder features_bkc — je nachdem, welchen Axis du gewählt hast.

Bei Reduktionen: Summierst du über die Positions-Dimension, wird aus inputs_bp einfach inputs_b. Nimmst du argmax über die Channels, wird aus logits_bc kurzerhand logits_b. Der Suffix schrumpft, um die neue Realität abzubilden.

Bei komplexen Tensoren: Du kannst beliebig kombinieren: attention_bpp für Attention-Scores über Positionspaare, gradients_bpn für Gradienten organisiert nach Batch, Position und Neuron.

Der Trick: Konsequenz

Der entscheidende Punkt ist Durchhaltevermögen. Wähl die Konvention, wende sie überall an — Inputs, Outputs, jede Zwischenberechnung. Ja, auch bei dem One-Liner, den du nur schnell zum Debuggen erstellt hast.

Dein zukünftiges Ich wird dir dankbar sein. Und dein Team erst recht.

Wenn du ML-Anwendungen baust und sauberen, wartbaren Code willst, der mit deinem Team skaliert — diese kleinen Konventionen multiplizieren sich zu massiven Produktivitätsgewinnen. Es ist dasselbe Prinzip wie überall gute Namensgebung in der Softwareentwicklung: Mach den Code lesbar wie Dokumentation.

Probier es eine Woche in deinem nächsten Projekt. Ich wette, du fragst dich danach, wie du je ohne这种方式 gearbeitet hast.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DA ZH-HANS EN