Uvod
U svijetu dubokog učenja i neuronskih mreža koji se brzo razvija, knjižnice i okviri ključni su za pojednostavljivanje i ubrzavanje procesa razvoja. PyTorch Lightning jedna je od takvih moćnih biblioteka izgrađena na temelju široko popularnog PyTorcha. Lightning je dizajniran da omogući Data Scientists i ML inženjerima da jednostavno skaliraju svoje modele, izbjegnu standardni kod i poboljšaju ukupnu čitljivost. Međutim, dok radite s PyTorch Lightningom, često se možete suočiti s problemima poput pogreške atributa 'pytorch_lightning.metrics'. U ovom ćemo se članku pozabaviti problemom i provesti vas kroz njegovo rješenje, razlažući kod radi boljeg razumijevanja. Štoviše, raspravljat ćemo o srodnim bibliotekama i funkcijama uključenim u rješavanje ovog problema.
Rješenje problema
Jedan od glavnih problema povezanih s pogreškom '%27pytorch_lightning%27 nema atribut %27metrics%27' je taj što ste možda instalirali stariju verziju PyTorch Lightninga koja nije uključivala metrički modul. Da biste to popravili, možete jednostavno nadograditi svoj PyTorch Lightning na najnoviju verziju pokretanjem sljedeće naredbe:
pip install --upgrade pytorch-lightning
Korak po korak objašnjenje koda
Nakon što ažurirate biblioteku, možemo početi raditi s metrikom temeljenom na PyTorch Lightningu. Prvi korak je uvoz potrebnih modula iz PyTorch Lightninga. Koristit ćemo metriku točnosti u svrhu ilustracije u ovom članku.
import torch from pytorch_lightning import LightningModule from pytorch_lightning.metrics.functional import accuracy
Zatim, definirajmo našu neuronsku mrežu koristeći LightningModule kao osnovnu klasu. Unutar metoda 'training_step' i 'validation_step', izračunat ćemo naša predviđanja i tenzore istine te izračunati točnost pomoću metričke funkcije 'accuracy' koju pruža 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
Naposljetku, slijedeći ovu strukturu koda, trebali biste moći glatko raditi s PyTorch Lightning-metrikama bez susreta sa spomenutom pogreškom atributa.
Povezane biblioteke: Torchmetrics
- Još jedna knjižnica koju valja spomenuti je Torchmetrics, knjižnica temeljena na PyTorchu specijalizirana za pružanje metrike za procjenu modela dubokog učenja. Torchmetrics biblioteku izradili su isti programeri kao i PyTorch Lightning, osiguravajući kompatibilnost i pružajući jednostavan i dosljedan API.
- Torchmetrics nudi razne metrike kao što su točnost, preciznost, opoziv, rezultat F1 i mnoge druge. Smanjuje napor ručne implementacije ovih metrika i omogućuje vam da se usredotočite na druge aspekte svojih projekata.
Poboljšanje čitljivosti koda s PyTorch Lightningom
Jedna od ključnih prednosti korištenja PyTorch Lightninga je ta što značajno pojednostavljuje strukturu petlje za obuku i čini kod čitljivijim. LightningModule enkapsulira osnovne komponente neuronske mreže, kao što su arhitektura modela, logika obuke i logika provjere valjanosti, dajući vam mogućnost upravljanja tim elementima na modularan način. Kao rezultat toga, možete učinkovitije razvijati i skalirati svoje modele, dajući vam bolje razumijevanje vašeg koda, a istovremeno poboljšavajući suradnju među članovima tima.