Saltar al contingut

Workflow

L'essència de l'aprenentatge automàtic i l'aprenentatge profund és agafar dades del passat, construir un algoritme (com una xarxa neuronal) per descobrir patrons i utilitzar els patrons descoberts per predir el futur.

Construirem un model PyTorch que aprèn el patró d’una línia recta i el reprodueix.

Terminal window
uv init --python 3.12 workflow
cd workflow
uv add matplotlib torch torchvision

Les “dades” en aprenentatge automàtic poden ser gairebé qualsevol cosa que puguis imaginar. Una taula de números (com un full de càlcul Excel gran), imatges de qualsevol tipus, vídeos (YouTube té moltes dades!), arxius d’àudio com cançons o podcasts, estructures de proteïnes, text i més.

L’aprenentatge automàtic és un joc de dues parts:

  • Convertir les teves dades, siguin quines siguin, en números (una representació).
  • Triar o construir un model per aprendre la representació de la millor manera possible.

De vegades, els dos passos es poden fer alhora.

Però què passa si no tens dades?

Bé, aquí és on som ara.

Sense dades.

Però en podem crear.

Crearem les nostres dades com una línia recta.

Utilitzarem la regressió lineal per crear les dades amb paràmetres coneguts (coses que poden ser apreses per un model) i després utilitzarem PyTorch per veure si podem construir un model per estimar aquests paràmetres utilitzant el gradient descent.

No et preocupis si els termes anteriors no tenen gaire sentit ara, els veurem en acció.

main.py
import torch
import matplotlib.pyplot as plt
# Create data
x = torch.arange(0, 1, 0.02).unsqueeze(dim=1)
y = 0.7 * x + 0.3
plt.plot(x, y)
plt.show()

Ara, en lloc de ser només números en una pàgina, les nostres dades són una línia recta.

Ara ens mourem cap a la construcció d’un model que pugui aprendre la relació entre x (features) i y (labels).

Dividir les dades en conjunts d’entrenament i prova

Section titled “Dividir les dades en conjunts d’entrenament i prova”

Abans de construir un model, hem de dividir-lo.

Un dels passos més importants en un projecte d’aprenentatge automàtic és crear un conjunt d’entrenament i un de prova (i quan es requereixi, un conjunt de validació).

Cada divisió del conjunt de dades serveix per a un propòsit específic:

DivisióPropòsitQuantitat del total de dadesAmb quina freqüència s’utilitza?
Conjunt d’entrenamentEl model aprèn d’aquestes dades.~60-80%Sempre
Conjunt de validacióEl model s’ajusta amb aquestes dades~10-20%Sovint però no sempre
Conjunt de provaEl model s’avalua amb aquestes dades per provar el que ha après~10-20%Sempre

Per ara, utilitzarem només un conjunt d’entrenament i un de prova, això significa que tindrem un conjunt de dades perquè el nostre model aprengui i un altre per avaluar-lo.

Podem crear-los dividint els nostres tensors x i y.

torch.utils.data.dataset.random_split

main.py
import torch
import matplotlib.pyplot as plt
# Create data
x = torch.arange(0, 1, 0.02).unsqueeze(dim=1)
y = 0.7 * x + 0.3
# Create train/test split
train_split = int(0.8 * len(x)) # 80% of data used for training set, 20% for testing
x_train, y_train = x[:train_split], y[:train_split]
x_test, y_test = y[train_split:], y[train_split:]
# Plots training data and test data.
plt.scatter(x_train, y_train, label="Training data")
plt.scatter(x_test, y_test, label="Testing data")
plt.legend()
plt.show()

Perfecte, tenim 40 mostres per a l’entrenament (x_train i y_train) i 10 mostres per a les proves (x_test i y_test).

El model que crearem intentarà aprendre la relació entre x_train i y_train, i després avaluarem el que ha après amb x_test i y_test.

Tensorflow Playground

Ara que tenim algunes dades, construirem un model per utilitzar els punts blaus per predir els punts verds.

Anirem directament al gra.

Primer escriurem el codi i després ho explicarem tot.

Replicarem un model estàndard de regressió lineal utilitzant PyTorch pur.

We’re going to get torch, torch.nn (nn stands for neural network and this package contains the building blocks for creating neural networks in PyTorch) and matplotlib

main.py
import torch
from torch import nn # nn contains all of PyTorch's building blocks for neural networks
import matplotlib.pyplot as plt

El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.

©2022-2025 xtec.dev