Descriere & Utilizare
În PyTorch, orice arhitectură neuronală — de la un perceptron cu două straturi până la cel mai complex model Transformer de 70 de miliarde de parametri — este o clasă Python care moștenește din torch.nn.Module.
Structura standard este compusă din două părți: în __init__() apelezi super().__init__() și definești toate straturile care conțin parametri învățabili (greutăți și bias-uri, cum ar fi nn.Linear sau nn.Embedding). În metoda forward(self, x) definești cum circulă tensorul de intrare prin aceste straturi.
Un detaliu arhitectural esențial: nu apela niciodată direct metoda model.forward(x)! Apelează întotdeauna instanța ca pe o funcție: model(x). Clasa de bază nn.Module implementează metoda specială __call__, care se ocupă automat de înregistrarea hook-urilor de depanare și de profiling.
Cum să o reții ușor
💡 Constructorul __init__ este atelierul în care cumperi și montezi utilajele pe podea, iar metoda forward() este banda rulantă pe care intră materia primă (x) și este prelucrată pe rând de fiecare utilaj până la produsul finit.
Opțiuni și parametri tehnici
super().__init__(): obligatoriu pe prima linie din constructor pentru a inițializa mecanismele interne de înregistrare a parametrilor.self.parameters(): iterator peste toți tensorii cu greutăți învățabile din model (pasat direct către optimizator).self.named_parameters(): returnează perechi(nume, tensor), util pentru aplicarea de weight decay diferențiat.model.to(device): mută toate straturile interne pe GPU dintr-o singură comandă.
Exemple practice și cazuri de utilizare
- Aflarea numărului total de parametri ai modelului:
total_param = sum(p.numel() for p in model.parameters() if p.requires_grad) - Comutarea între antrenare și inferență:
model.train()vsmodel.eval(). - Împachetarea rapidă fără clasă dedicată: folosește
nn.Sequential(nn.Linear(10, 20), nn.ReLU(), nn.Linear(20, 2))pentru rețele simple fără ramificări.
Sfaturi de configurare & capcane
Dacă creezi o listă de straturi într-o buclă for, folosește nn.ModuleList([...]) în locul unei liste Python standard [...] — o listă Python obișnuită nu își înregistrează parametrii în PyTorch, iar aceștia nu vor fi antrenați!
Comenzi și ghiduri înrudite
torch-nn-layers: Resursă asociată din acest modul.torch-loss-functions: Resursă asociată din acest modul.torch-optimizers-adamw: Resursă asociată din acest modul.