Sissejuhatus
Kiiresti arenevas süvaõppe ja närvivõrkude maailmas on raamatukogud ja raamistikud arendusprotsessi lihtsustamiseks ja kiirendamiseks hädavajalikud. PyTorch Lightning on üks selline võimas raamatukogu, mis on ehitatud laialt populaarse PyTorchi peale. Lightning on loodud selleks, et andmeteadlased ja ML-insenerid saaksid hõlpsasti oma mudeleid skaleerida, vältida standardkoodi ja parandada üldist loetavust. Siiski võite PyTorch Lightningiga töötades sageli silmitsi seista selliste probleemidega nagu atribuudiviga „pytorch_lightning.metrics”. Selles artiklis käsitleme probleemi ja juhendame teid selle lahenduseni, tükeldades koodi paremaks mõistmiseks. Lisaks käsitleme selle probleemi lahendamisega seotud seotud raamatukogusid ja funktsioone.
Probleemi lahendus
Üks peamisi probleeme, mis on seotud veaga „%27pytorch_lightning%27 ei ole atribuuti %27metrics%27”, on see, et olete võib-olla installinud PyTorch Lightningi vanema versiooni, mis ei sisaldanud mõõdikute moodulit. Selle parandamiseks saate oma PyTorch Lightningi lihtsalt uuendada uusimale versioonile, käivitades järgmise käsu:
pip install --upgrade pytorch-lightning
Koodeksi samm-sammult selgitus
Kui olete teeki värskendanud, saame alustada tööd PyTorch Lightningi-põhiste mõõdikutega. Esimene samm on vajalike moodulite importimine PyTorch Lightningist. Selles artiklis kasutame illustreerimiseks täpsuse mõõdikut.
import torch from pytorch_lightning import LightningModule from pytorch_lightning.metrics.functional import accuracy
Järgmisena määratleme oma närvivõrgu, kasutades baasklassina LightningModule'i. Meetodites „training_step” ja „validation_step” arvutame välja oma ennustus- ja põhitõe tensorid ning arvutame täpsuse PyTorch Lightningi pakutava „täpsuse” meetrika funktsiooni abil.
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
Lõpuks, järgides seda koodistruktuuri, peaksite saama PyTorch Lightning-meetrikaga sujuvalt töötada, ilma mainitud atribuudi viga ilmnemata.
Seotud raamatukogud: Torchmetrics
- Veel üks mainimist väärt raamatukogu on Torchmetrics, PyTorchil põhinev raamatukogu, mis on spetsialiseerunud süvaõppe mudelite hindamiseks mõeldud mõõdikute pakkumisele. Torchmetrics teegi on loonud samad arendajad nagu PyTorch Lightning, tagades ühilduvuse ning pakkudes lihtsat ja järjepidevat API-d.
- Torchmetrics pakub erinevaid mõõdikuid, nagu täpsus, täpsus, tagasikutsumine, F1 skoor ja palju muud. See vähendab nende mõõdikute käsitsi rakendamise pinget ja võimaldab teil keskenduda oma projektide muudele aspektidele.
Koodi loetavuse parandamine PyTorch Lightningiga
PyTorch Lightningu kasutamise üks peamisi eeliseid on see, et see lihtsustab oluliselt treeningtsükli struktuuri ja muudab koodi loetavamaks. LightningModule kapseldab närvivõrgu põhikomponendid, nagu mudeliarhitektuur, koolitusloogika ja valideerimisloogika, mis annab teile võimaluse hallata neid elemente modulaarselt. Selle tulemusel saate oma mudeleid tõhusamalt arendada ja skaleerida, andes teile oma koodist parema arusaamise, parandades samal ajal ka meeskonnaliikmete vahelist koostööd.