Hoppa till innehållet
AI-grafen
D· AI-utvecklaredeep-learning· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Neuronnät — forward pass med matriser

Kunna skriva ett flerlagers neuronnäts forward pass som matrisoperationer, räkna ut antal parametrar, och implementera det i ren Python/NumPy.

Förkunskaper

Formellt

Ett nät med indata x (d tal), ett dolt lager med h neuroner och k utdata:

z₁ = W₁x + b₁ (W₁ är h×d, b₁ är h) a₁ = ReLU(z₁) z₂ = W₂a₁ + b₂ (W₂ är k×h, b₂ är k) ŷ = softmax(z₂) (för klassificering: sannolikheter som summerar till 1)

Parametrar: h·d + h + k·h + k. För d = 784, h = 128, k = 10: 100 480 + 1 290 = 101 770.

ReLU(z) = max(0, z). Softmax(z)ᵢ = e^{zᵢ} / Σⱼ e^{zⱼ}.

Kod

import numpy as np

def relu(z): return np.maximum(0, z)
def softmax(z):
    e = np.exp(z - z.max())
    return e / e.sum()

rng = np.random.default_rng(0)
W1, b1 = rng.normal(0, 0.1, (128, 784)), np.zeros(128)
W2, b2 = rng.normal(0, 0.1, (10, 128)),  np.zeros(10)

def forward(x):
    a1 = relu(W1 @ x + b1)
    return softmax(W2 @ a1 + b2)

x = rng.random(784)
print(forward(x).sum())   # 1.0

@ är matrismultiplikation. Med ett batch av N exempel som N×784-matris blir det X @ W1.T + b1 — samma sak, alla exempel på en gång.

Behärskning innebär

  • Skriver forward pass för ett tvålagersnät som formler
  • Beräknar parameterantal ur lagerstorlekar

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser