Riješeno: %27pytorch_lightning%27 nema atribut %27metrics%27

%27pytorch_lightning%27 nema atribut %27metrics%27Uvod

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.

Povezani postovi:

Ostavite komentar