PyTorch-tensors en Autograd
torch.Tensor, requires_grad, backward(), gradiëntberekening, tensorbewerkingen.
PyTorch-tensors en Autograd is een gratis Leer AI met Python-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat is PyTorch?
PyTorch is een framework voor deep learning dat is opgebouwd rond tensoren: meerdimensionale arrays met GPU-versnelling en automatische differentiatie. De twee bouwstenen die je eerst moet beheersen, zijn tensoren en autograd.
pip install torch
import torchTensoren maken
Een tensor lijkt op een NumPy-array, maar kan op een GPU staan en gradiënten bijhouden. Maak er een met torch.tensor. Tensoren hebben een shape en een dtype.
x = torch.tensor([1.0, 2.0, 3.0])
print(x.shape) # torch.Size([3])
print(x.dtype) # torch.float32Tensorbewerkingen
Tensoren ondersteunen berekeningen per element, matrixvermenigvuldiging en het wijzigen van hun vorm. Bewerkingen zijn gevectoriseerd en worden snel op hardware uitgevoerd. Dit is de rekenkundige onderlaag van elk neuraal netwerk.
a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
b = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
print(a @ b) # matrix multiplyrequires_grad: gradiënten bijhouden
Maak een tensor met requires_grad=True om gradiënten te berekenen. PyTorch registreert vervolgens elke bewerking daarop en bouwt een berekeningsgrafiek die het later kan differentiëren.
x = torch.tensor([2.0, 3.0], requires_grad=True)
print(x.requires_grad) # TrueEen berekening opbouwen
Pas bewerkingen toe op een tensor die gradiënten bijhoudt om een scalaire uitvoer te maken. Hier kwadrateren we elk element en tellen we de resultaten op, zodat één getal ontstaat waarvan we de afgeleide ten opzichte van x kunnen berekenen.
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x.pow(2).sum() # y = x0^2 + x1^2
print(y) # tensor(13., grad_fn=...)backward() aanroepen
Roep .backward() aan op een scalair getal om gradiënten te berekenen via backpropagatie. PyTorch doorloopt de geregistreerde grafiek in omgekeerde volgorde en vult de afgeleiden automatisch in.
y.backward().grad lezen
Na backward() bevat elke invoertensor zijn gradiënt in .grad. Voor y = sum(x^2) is de afgeleide 2x, dus de gradiënt is [4, 6].
print(x.grad) # tensor([4., 6.])Gradiënten worden opgeteld
Een subtiele valkuil: gradiënten worden opgeteld bij meerdere aanroepen van backward(). In een trainingslus moet je ze bij elke stap op nul zetten met x.grad.zero_() of met de zero_grad() van de optimalisator.
x.grad.zero_() # reset before the next backward()torch.no_grad() voor inferentie
Tijdens inferentie heb je geen gradiënten nodig en kost het bijhouden ervan onnodig geheugen. Wikkel voorspellingscode in with torch.no_grad(): om het opbouwen van de grafiek uit te schakelen en alles sneller te maken.
with torch.no_grad():
preds = x.pow(2).sum()
print(preds.requires_grad) # Falsedetach() om de gradiëntstroom te stoppen
.detach() retourneert een tensor die dezelfde gegevens deelt, maar uit de berekeningsgrafiek is gehaald. Gebruik dit om een waarde te gebruiken zonder dat gradiënten erdoorheen terugstromen, bijvoorbeeld voor logboekregistratie of om een deel van een netwerk vast te zetten.
z = x.detach()
print(z.requires_grad) # FalseWaarom Autograd belangrijk is
Autograd maakt deep learning praktisch: je definieert de voorwaartse berekening en PyTorch leidt de gradiënten voor backpropagatie automatisch af. Elke trainingslus die je schrijft steunt op requires_grad, backward en .grad.
Korte toets
Toets je begrip van autograd.
Samenvatting: tensoren en Autograd
Je hebt tensoren gemaakt met torch.tensor en het bijhouden van gradiënten ingeschakeld via requires_grad=True. Je hebt een uitvoer berekend, .backward() uitgevoerd en afgeleiden uit .grad gelezen. Je hebt geleerd dat gradiënten zich opstapelen, torch.no_grad() gebruikt voor inferentie en .detach() om de gradiëntstroom te stoppen.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 53
- Lessen
- 225
Veelgestelde vragen
Is de les “PyTorch-tensors en Autograd” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “PyTorch-tensors en Autograd”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat leer ik in “PyTorch-tensors en Autograd”?
torch.Tensor, requires_grad, backward(), gradiëntberekening, tensorbewerkingen. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer AI met Python te beginnen?
Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “PyTorch-tensors en Autograd”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?
Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- PyTorch-tensors en Autograd
- Aangepaste datasets en DataLoaders
- CNN's bouwen en trainen in PyTorch
- Objectdetectie met YOLOv8