Opgelost: %27pytorch_lightning%27 heeft geen attribuut %27metrics%27

Laatste update: 09/11/2023

%27pytorch_lightning%27 heeft geen attribuut %27metrics%27Introductie

In de snel evoluerende wereld van deep learning en neurale netwerken zijn bibliotheken en frameworks essentieel om het ontwikkelingsproces te vereenvoudigen en te versnellen. PyTorch Lightning is zo'n krachtige bibliotheek die bovenop de alom populaire PyTorch is gebouwd. Lightning is ontworpen om datawetenschappers en ML-ingenieurs in staat te stellen hun modellen eenvoudig te schalen, boilerplate-code te vermijden en de algehele leesbaarheid te verbeteren. Tijdens het werken met PyTorch Lightning kunt u echter vaak problemen ondervinden zoals de attribuutfout 'pytorch_lightning.metrics'. In dit artikel zullen we het probleem aanpakken en u door de oplossing leiden, waarbij we de code opsplitsen voor een beter begrip. Bovendien zullen we gerelateerde bibliotheken en functies bespreken die betrokken zijn bij het oplossen van dit probleem.

Oplossing voor het probleem

Een van de belangrijkste problemen met betrekking tot de fout '%27pytorch_lightning%27 heeft geen attribuut %27metrics%27' is dat u mogelijk de oudere versie van PyTorch Lightning hebt geïnstalleerd die de metrische module niet bevatte. Om dit op te lossen, kunt u eenvoudig uw PyTorch Lightning upgraden naar de nieuwste versie door de volgende opdracht uit te voeren:

pip install --upgrade pytorch-lightning

Stapsgewijze uitleg van de code

Zodra u de bibliotheek heeft bijgewerkt, kunnen we beginnen te werken met op PyTorch Lightning gebaseerde statistieken. De eerste stap is het importeren van de benodigde modules uit PyTorch Lightning. In dit artikel gebruiken we de statistiek Nauwkeurigheid ter illustratie.

import torch
from pytorch_lightning import LightningModule
from pytorch_lightning.metrics.functional import accuracy

Laten we vervolgens ons neurale netwerk definiëren met behulp van de LightningModule als basisklasse. Binnen de methoden 'training_step' en 'validation_step' zullen we onze voorspellings- en grondwaarheidstensors berekenen en de nauwkeurigheid berekenen met behulp van de metrische functie 'nauwkeurigheid' van 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

Ten slotte zou u, door deze codestructuur te volgen, soepel moeten kunnen werken met PyTorch Lightning-metrics zonder de genoemde attribuutfout tegen te komen.

Gerelateerde bibliotheken: Torchmetrics

  • Een andere bibliotheek die het vermelden waard is, is Toortsmetriek, een op PyTorch gebaseerde bibliotheek die gespecialiseerd is in het leveren van statistieken voor het evalueren van deep learning-modellen. Torchmetrics-bibliotheek is gemaakt door dezelfde ontwikkelaars als PyTorch Lightning, waardoor compatibiliteit wordt gegarandeerd en een eenvoudige en consistente API wordt geboden.
  • Torchmetrics biedt verschillende statistieken, zoals nauwkeurigheid, precisie, terugroepen, F1-score en nog veel meer. Het vermindert de inspanning van het handmatig implementeren van deze statistieken en stelt u in staat om u te concentreren op andere aspecten van uw projecten.

Codeleesbaarheid verbeteren met PyTorch Lightning

Een van de belangrijkste voordelen van het gebruik van PyTorch Lightning is dat het de structuur van de trainingslus aanzienlijk vereenvoudigt en de code leesbaarder maakt. De LightningModule omvat de kerncomponenten van een neuraal netwerk, zoals de modelarchitectuur, trainingslogica en validatielogica, waardoor u deze elementen op een modulaire manier kunt beheren. Hierdoor kunt u uw modellen efficiënter ontwikkelen en schalen, waardoor u uw code beter begrijpt en de samenwerking tussen teamleden verbetert.

Gerelateerde berichten: