Python — klasser och objekt
Kunna definiera klasser med attribut och metoder och förstå varför nn.Module är en klass.
Förkunskaper
Intuition
Tänk på en klass som en mall eller en ritning för att bygga hus. Själva ritningen (klassen) innehåller information om hur många rum det ska finnas och hur köket ska se ut, men det är inte ett verkligt hus du kan bo i. När du bygger ett hus utifrån ritningen skapar du ett objekt eller en instans. Varje hus du bygger är unikt; ett kan vara målat rött och ett annat blått. Dessa egenskaper kallas attribut.
I Python är klasser också dynamiska, vilket betyder att de skapas medan programmet körs och kan ändras efteråt [1]. En klass buntar ihop data (attribut) och funktioner (metoder) som opererar på den datan [1]. Till exempel kan en klass för en bil ha attribut för färg och hastighet, samt en metod för att starta motorn. Genom att använda klasser kan vi skapa många olika bilar (objekt) som alla följer samma grundstruktur men har olika värden för sina attribut. Detta gör koden mer organiserad och återanvändbar [1].
Kod
Här är ett exempel på hur man definierar en enkel klass i Python. Vi skapar en klass Bil med en metod __init__ som körs automatiskt när vi skapar ett nytt objekt. self refererar till det specifika objektet som just skapas [4].
class Bil:
def __init__(self, farg):
self.farg = farg # Attribut
self.hastighet = 0
def starta(self):
self.hastighet = 10
return f"Bilen är {self.farg} och kör {self.hastighet} km/h"
# Skapa en instans
min_bil = Bil("blå")
print(min_bil.starta())
I djupinlärning är nn.Module en specialklass i PyTorch. Den är en basklass för alla neurala nätverk [2]. När du definierar en modell som ärver från nn.Module, måste du ofta definiera en forward-metod. Denna metod beskriver hur datan flyter genom nätverket. PyTorch hanterar automatiskt beräkning av derivator och lagring av parametrar tack vare att nn.Module är en klass som är designad för detta [2]. Att förstå att nn.Module är en klass hjälper dig att se hur modeller är uppbyggda som objekt med tillstånd och beteende [2].
Behärskning innebär
- Kunna definiera en Python-klass med attribut och metoder, inklusive hur self används.
- Förstå skillnaden mellan klassobjekt och instansobjekt samt hur __init__ initialiserar ett objekt.
- Förstå att nn.Module är en basklass i PyTorch som hanterar parametrar och forward-metoden.
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- The Python Tutorial (python.org) — A Word About Names and Objects — PSF-2.0 · Python Software Foundation — The Python Tutorial, https://docs.python.org/3/tutorial/ — PSF License 2.0
- Dive into Deep Learning (d2l.ai) — Object-Oriented Design for Implementation — CC-BY-SA-4.0 · Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola — Dive into Deep Learning, https://d2l.ai — CC BY-SA 4.0
- The Python Tutorial (python.org) — A Word About Names and Objects — PSF-2.0 · Python Software Foundation — The Python Tutorial, https://docs.python.org/3/tutorial/ — PSF License 2.0
- The Python Tutorial (python.org) — A Word About Names and Objects — PSF-2.0 · Python Software Foundation — The Python Tutorial, https://docs.python.org/3/tutorial/ — PSF License 2.0