
En el món en ràpida evolució de l'aprenentatge profund i les xarxes neuronals, les biblioteques i els marcs són essencials per simplificar i accelerar el procés de desenvolupament. PyTorch Lightning és una d'aquestes biblioteques poderoses construïdes a la part superior del popular PyTorch. Lightning està dissenyat per permetre als científics de dades i als enginyers ML escalar fàcilment els seus models, evitar el codi normal i millorar la llegibilitat general. Tanmateix, mentre treballeu amb PyTorch Lightning, sovint us trobeu davant de problemes com l'error de l'atribut "pytorch_lightning.metrics". En aquest article, abordarem el problema i us guiarem per la seva solució, desglossant el codi per a una millor comprensió. A més, parlarem de biblioteques i funcions relacionades implicades en la resolució d'aquest problema.
Solució al problema
Un dels principals problemes relacionats amb l'error '%27pytorch_lightning%27 no té l'atribut %27metrics%27' és que potser heu instal·lat la versió anterior de PyTorch Lightning que no incloïa el mòdul de mètriques. Per solucionar-ho, només podeu actualitzar el vostre PyTorch Lightning a la darrera versió executant l'ordre següent:
pip install --upgrade pytorch-lightning
Explicació pas a pas del codi
Un cop hàgiu actualitzat la biblioteca, podem començar a treballar amb mètriques basades en PyTorch Lightning. El primer pas és importar els mòduls necessaris des de PyTorch Lightning. Utilitzarem la mètrica Exactitud amb finalitats il·lustratives en aquest article.
import torch from pytorch_lightning import LightningModule from pytorch_lightning.metrics.functional import accuracy
A continuació, definim la nostra xarxa neuronal utilitzant el LightningModule com a classe base. Dins dels mètodes 'training_step' i 'validation_step', calcularem els nostres tensors de predicció i veritat terrestre, i calcularem la precisió mitjançant la funció mètrica de 'precisió' proporcionada per PyTorch Lightning.
class Classifier(LightningModule):
def __init__(self):
super().__init__()
self.layer1 = torch.nn.Linear( 32, 128)
self.layer2 = torch.nn.Linear(128, 10)
def forward(self, x):
x = torch.relu(self.layer1(x))
x = self.layer2(x)
return x
def training_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x)
loss = torch.nn.functional.cross_entropy(y_hat, y)
acc = accuracy(y_hat, y) # Compute accuracy using PyTorch Lightning
self.log('train_loss', loss)
self.log('train_acc', acc, prog_bar=True)
return loss
def validation_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x)
loss = torch.nn.functional.cross_entropy(y_hat, y)
acc = accuracy(y_hat, y) # Compute accuracy using PyTorch Lightning
self.log('val_loss', loss, prog_bar=True)
self.log('val_acc', acc, prog_bar=True)
return loss
Finalment, seguint aquesta estructura de codi, hauríeu de poder treballar sense problemes amb les mètriques PyTorch Lightning sense trobar l'error d'atribut esmentat.
Biblioteques relacionades: Torchmetrics
- Una altra biblioteca que val la pena esmentar és Torchmetria, una biblioteca basada en PyTorch especialitzada en proporcionar mètriques per avaluar models d'aprenentatge profund. La biblioteca Torchmetrics és creada pels mateixos desenvolupadors que PyTorch Lightning, garantint la compatibilitat i proporcionant una API senzilla i coherent.
- Torchmetrics ofereix diverses mètriques com ara precisió, precisió, recordatori, puntuació F1 i moltes més. Redueix la tensió d'implementar aquestes mètriques manualment i us permet centrar-vos en altres aspectes dels vostres projectes.
Millora de la llegibilitat del codi amb PyTorch Lightning
Un dels avantatges clau d'utilitzar PyTorch Lightning és que simplifica significativament l'estructura del bucle d'entrenament i fa que el codi sigui més llegible. El LightningModule encapsula els components bàsics d'una xarxa neuronal, com ara l'arquitectura del model, la lògica d'entrenament i la lògica de validació, donant-vos la possibilitat de gestionar aquests elements de manera modular. Com a resultat, podeu desenvolupar i escalar els vostres models de manera més eficient, donant-vos una millor comprensió del vostre codi alhora que milloreu la col·laboració entre els membres de l'equip.