Descriere & Utilizare
În PyTorch, totul începe cu Tensorul (Tensor): o matrice multidimensională de date numerice identică conceptual cu un numpy.ndarray, dar cu două superputeri majore: 1) poate rula pe GPU-uri (NVIDIA CUDA, Apple Silicon MPS) pentru o viteză de calcul de 50x mai mare, și 2) ține minte toate operațiunile efectuate pentru calculul automat al derivatelor (gradient).
Fiecare tensor este definit de trei proprietăți esențiale: shape (dimensiunile, ex: [batch_size, sequence_length, hidden_dim]), dtype (tipul de date: torch.float32 pentru precizie standard, torch.bfloat16 pentru antrenare LLM modernă, torch.int64 pentru indecși de tokeni) și device (unde trăiește memoria: CPU sau GPU).
Pentru manipularea dimensiunilor fără alocări redundante de memorie, .view() creează o nouă vizualizare a aceluiași buffer de memorie, în timp ce .squeeze() elimină dimensiunile de mărime 1, iar .unsqueeze() adaugă o nouă axă (esențial pentru adăugarea dimensiunii de batch).
Cum să o reții ușor
💡 Dacă o listă Python este un șirag simplu de mărgele, un tensor este o structură de cub rubik multidimensional din titan care poate fi rotită instantaneu pe orice axă și procesată în paralel de mii de nuclee GPU.
Opțiuni și parametri tehnici
torch.tensor(data, dtype=None, device=None): convertește liste sau array-uri NumPy în tensori.tensor.shape / tensor.size(): returnează tuplul dimensiunilor (ex:torch.Size([32, 128, 768])).tensor.view(*shape): rearanjează dimensiunile dacă tensorul este contiguu în memorie.tensor.contiguous(): forțează rearanjarea contiguă a memoriei dacă.view()dă eroare după operațiuni de transpunere (.transpose()sau.permute()).
Exemple practice și cazuri de utilizare
- Adăugarea dimensiunii de batch (de la [768] la [1, 768]):
x_batch = x.unsqueeze(0) - Conversie bidirecțională între PyTorch și NumPy:
arr_np = tensor.numpy(); t = torch.from_numpy(arr_np)(partajează aceeași memorie pe CPU!). - Verificarea memoriei contigue:
x.is_contiguous()
Sfaturi de configurare & capcane
Folosește întotdeauna .reshape() dacă nu ești sigur de starea de contiguitate a memoriei — .reshape() va apela automat .view() dacă este posibil sau .contiguous().view() dacă tensorul a fost rotit.
Comenzi și ghiduri înrudite
torch-device-gpu-mps: Resursă asociată din acest modul.torch-autograd-backward: Resursă asociată din acest modul.torch-nn-layers: Resursă asociată din acest modul.