Tensor
La funció d'un tensor és representar les dades de manera numèrica.
Introducció
Section titled “Introducció”PyTorch permet manipular i processar dades i escriure algorismes d’aprenentatge automàtic utilitzant codi Python.
Entorn de treball
Section titled “Entorn de treball”Crea una máquina Linux a Isard amb GPU.
Instal.la PyCharm.
Instal·la UV.
Crea un projecte pytorch
:
uv init --python 3.12 tensorcd tensoruv add torch torchvision
Importa PyTorch i comprova la versió que estàs utilitzant.
import torch
print(torch.__version__)
Prova que el projecte pot utilitzar CUDA
import torch
print("cuda", torch.cuda.is_available())
Tensor
Section titled “Tensor”Els tensors són el bloc fonamental de l’aprenentatge automàtic.
La seva funció és representar les dades de manera numèrica.
Un tensor s’assembla molt a un array de Numpy.
Escalar
Section titled “Escalar”Un escalar és un tensor de dimensió zero.
3 |
import torch
scalar = torch.tensor(7)print(scalar)
Veus com s’ha imprès tensor(7)
en lloc de 7
?
tensor(7)
Això vol dir que encara que scalar
sigui un únic número, és de tipus torch.Tensor
.
Pots comprovar les dimensions d’un tensor utilitzant l’atribut ndim
.
import torch
scalar = torch.tensor(7)assert scalar.ndim == 0
I si volguéssim obtenir el número del tensor?
És a dir, convertir-lo de torch.Tensor
a un enter de Python? 🤨
Per fer-ho podem utilitzar el mètode item()
.
import torch
scalar = torch.tensor(7)
assert scalar.item() == 7
Vector
Section titled “Vector”Un vector és un tensor de dimensió 1.
3 | 7 | 1 |
Un vector pot contenir molts números.
Per exemple, pots tenir un vector
[3, 2]
per descriure[bedrooms, bathrooms]
a casa teva.[3, 6, 9, 5, 8]
per descriure les notes d’un grup d’estudiants.
El que importa és que un tensor és flexible en el que pot representar:
import torch
vector = torch.Tensor([7,7])print(vector)
Ara el vector ara conté dos 7:
tensor([7., 7.])
Quantes dimensions creus que tindrà?
import torch
vector = torch.Tensor([7,7])assert vector.ndim == 1
El vector
conté dos números, però només té una única dimensió.
Pots saber el nombre de dimensions que té un tensor a PyTorch comptant el nombre de claudàtors ([
) a l’exterior, i només cal comptar un costat.
Quants claudàtors té el vector
?
Un altre concepte important pels tensors és el seu atribut shape
.
La forma ens diu com estan disposats els elements dins del tensor.
Comprovem la forma del teu vector
.
import torch
vector = torch.Tensor([7,7])
print(vector.shape)
El resultat és torch.Size([2])
, que significa que el vector té una forma de [2]
.
torch.Size([2])
Això és degut als dos elements que has col·loca dins dels claudàtors ([7, 7]
).
Matriu
Section titled “Matriu”Una matriu és un tensor de dimensió 2.
3 | 7 | 1 |
4 | 8 | 3 |
import torch
matrix = torch.tensor([[7,8],[9,10]])print(matrix)
Les matrius són tan flexibles com els vectors, però tenen una dimensió extra.
tensor([[ 7, 8], [ 9, 10]])
matrix
té dues dimensions (has comptat el nombre de claudàtors a l’exterior d’un costat?).
import torch
matrix = torch.tensor([[7,8],[9,10]])assert matrix.ndim == 2
Quina forma creus que tindrà?
import torch
matrix = torch.tensor([[7,8],[9,10]])print(matrix.shape)
Obtenim la sortida torch.Size([2, 2])
perquè matrix
té dos elements de profunditat i dos elements d’amplada.
torch.Size([2, 2])
n-dimension
Section titled “n-dimension”Pots crear un tensor de qualsevol dimensió.
Per exemple un tensor de dimensió 3:
import torch
matrix = torch.tensor([ [[7, 8, 7], [9, 10, 6]], [[3, 4, 2], [1, 3, 2]], [[6, 4, 7], [3, 6, 2]], [[3, 6, 4], [6, 3, 1]]])
print(matrix.shape)
torch.Size([4, 2, 3])
Tensors aleatoris
Section titled “Tensors aleatoris”Hem establert que els tensors representen algun tipus de dades.
I els models d’aprenentatge automàtic com les xarxes neuronals manipulen i busquen patrons dins dels tensors.
Però quan construïm models d’aprenentatge automàtic amb PyTorch, és poc freqüent que creem tensors a mà (com hem estat fent).
En lloc d’això, un model d’aprenentatge automàtic sovint comença amb grans tensors de nombres aleatoris i ajusta aquests nombres aleatoris mentre treballa amb les dades per representar-les millor.
En essència:
Com a científic de dades, pots definir com el model d’aprenentatge automàtic comença (inicialització), mira les dades (representació) i actualitza (optimització) els teus nombres aleatoris.
Més endavant treballarem amb aquests passos de manera pràctica.
Per ara, vegem com crear un tensor de nombres aleatoris.
Podem fer-ho utilitzant torch.rand()
i passant el paràmetre size
.
import torch
tensor = torch.rand(size=(4, 3))
print(tensor)
Pots veure que el tensor és de mida (4,3)
i s’ha omplert amb nombres aleatoris entre el 0
i l’1
:
tensor([[0.4576, 0.9100, 0.8061], [0.2090, 0.7874, 0.7142], [0.7520, 0.7464, 0.0220], [0.1269, 0.1697, 0.3464]])
The flexibility of torch.rand()
is that we can adjust the size to be whatever we want.
Per exemple, una imatge es representa amb una rectangle de píxels, on per cada píxel es guarden els valors vermell, verd, i blau.
Si tens una imatge d’una alçada de 224 píxels, una amplada de 224 píxels i 3 canals de color (vermell, verd, blau), la pots representar amb un tensor amb forma [224, 224,3 ]
([height, width, colour_channels]
).
import torch
tensor = torch.rand(size=(224, 224, 3))
print(tensor)
El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev