Én navngivningskonvention der ændrer alt i din ML-kode

Én navngivningskonvention der ændrer alt i din ML-kode

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

Gør din neurale netværkskode læsbar med Shape Suffixes

Lad os være ærlige — at finde fejl i neurale netværk er svært nok i forvejen. Alligevel ender mange af os med at stirre på en variabel ved navn outputs og forsøge at huske: er batch-dimensionen først eller sidst? Er der ensekvens-dimension med? Har nogen reshaped den et sted, jeg ikke tænkte over?

Der findes en bedre måde. Og den er overraskende enkel.

Hvad er Shape Suffixes?

Shape suffixes er små bogstavskoder, du tilføjer direkte til dine tensorvariablers navne. De fortæller præcis, hvilke dimensioner den pågældende tensor har. I stedet for outputs skriver du outputs_bc. I stedet for activations skriver du activations_bcn.

Umiddelbart kan det ligne ekstra arbejde. Tro mig — det er det stikmodsatte. Det er en af de mest effektive kodningskonventioner, du kan indføre i machine learning-projekter.

Det alfabet du skal bruge

Her er de mest almindelige koder for tensor-dimensioner:

  • b — batch-dimensionen
  • p — position eller sekvens-indeks
  • n — neuron-dimensionen (typisk resultatet af en vægtmatrix-multiplikation)
  • c — kanal-dimensionen
  • h — højde (for billedtensores)
  • w — bredde (for billedtensores)
  • d — dybde (for 3D-data)
  • k — kernel-dimensionen

logits_bc fortæller dig, at du har et batch af logits med kanal-dimensioner — ideelt til klassifikationsopgaver. positional_embeddings_bpn betyder, at du har batch, position og neuron i den rækkefølge.

Hvorfor denne konvention betaler sig

Øjeblikkelig kontekst. Når du ser probs_bc, ved du med det samme, at du kigger på sandsynligheder organiseret efter batch og klasse. Ingen gætteri, ingen dokumentationsjagt.

Indbygget fejldetektion. Her bliver det virkelig kraftfuldt. Hvis du skriver outputs_bc = torch.matmul(activations_bcn, weights_bcn), vil uoverensstemmelsen springe direkte i øjnene. Din vægtmatrix burde være weights_nc for at multiplicere korrekt med activations_bcn. Variabelnavnene selv bliver en statisk type-checker for tensorformer.

Selvopdaterende dokumentation. Kommentarer bliver forældede. Ingen opdaterer dem, når koden ændres. Men embeddings_bpn forbliver præcis så længe, du holder konventionen — fordi variabelnavnet ER dokumentationen.

Glattere kode reviews. Reviewere kan spotte dimension-uoverensstemmelser i pull requests uden at køre koden eller spore igennem funktionskald. Det sparer tid for alle og fanger fejl tidligere.

Praktiske mønstre du kan tage i brug

Ved sammensætninger og stacks: Når du kombinerer tensors, opdater suffixen til den nye struktur. Stack to features_bc tensors langs en ny dimension? Nu hedder den features_bck eller features_bkc afhængigt af hvilken akse du valgte.

Ved reduktioner: Summér over position-dimensionen og din inputs_bp bliver til inputs_b. Tag argmax på tværs af kanaler og logits_bc bliver til logits_b. Suffixen skrumper for at matche virkeligheden.

Ved komplekse tensors: Du kan stable flere dimensionkoder: attention_bpp for attention-scores på tværs af positionspar, eller gradients_bpn for gradients organiseret efter batch, position og neuron.

Sådan gør du det til en vane

Nøglen er konsistens. Vælg konventionen og anvend den overalt — inputs, outputs og hver eneste mellemregning. Ja, også den variabel du lige oprettede midlertidigt til debugging.

Din fremtidige selv vil takke dig. Det samme vil dine kolleger.

Hvis du bygger ML-applikationer og gerne vil have ren, vedligeholdelsesvenlig kode der skalerer med dit team, så er disse små konventioner en del af ligningen. Det er det samme princip som god navngivning alle andre steder i softwareudvikling — få koden til at læse som dokumentation.

Prøv det i en uge i dit næste projekt. Jeg tror, du vil undre dig over, hvordan du nogensinde kodede uden det.

Read in other languages:

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