已解決:%27pytorch_lightning%27 沒有屬性 %27metrics%27

最後更新: 09/11/2023

%27pytorch_lightning%27 沒有屬性 %27metrics%27引言

在快速發展的深度學習和神經網絡世界中,庫和框架對於簡化和加速開發過程至關重要。 PyTorch Lightning 就是這樣一個建立在廣受歡迎的 PyTorch 之上的強大庫。 Lightning 旨在讓數據科學家和 ML 工程師輕鬆擴展他們的模型,避免樣板代碼,並提高整體可讀性。 但是,在使用 PyTorch Lightning 時,您可能經常會發現自己面臨諸如“pytorch_lightning.metrics”屬性錯誤之類的問題。 在本文中,我們將解決這個問題並引導您完成它的解決方案,分解代碼以便更好地理解。 此外,我們將討論解決此問題所涉及的相關庫和函數。

問題的解決方案

與錯誤“%27pytorch_lightning%27 沒有屬性 %27metrics%27”相關的主要問題之一是您可能安裝了不包含指標模塊的舊版本 PyTorch Lightning。 要解決此問題,您只需運行以下命令即可將 PyTorch Lightning 升級到最新版本:

pip install --upgrade pytorch-lightning

代碼的逐步解釋

更新庫後,我們就可以開始使用基於 PyTorch Lightning 的指標。 第一步是從 PyTorch Lightning 導入必要的模塊。 在本文中,我們將使用準確度指標進行說明。

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

接下來,讓我們使用 LightningModule 作為基類來定義我們的神經網絡。 在“training_step”和“validation_step”方法中,我們將計算我們的預測和真實張量,並使用 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

最後,遵循此代碼結構,您應該能夠順利使用 PyTorch Lightning-metrics 而不會遇到上述屬性錯誤。

相關庫:Torchmetrics

  • 另一個值得一提的庫是 火炬計量學,一個基於 PyTorch 的庫,專門提供用於評估深度學習模型的指標。 Torchmetrics 庫由與 PyTorch Lightning 相同的開發人員創建,確保兼容性並提供簡單一致的 API。
  • Torchmetrics 提供各種指標,如準確性、精確度、召回率、F1 分數等等。 它減少了手動實施這些指標的壓力,並允許您專注於項目的其他方面。

使用 PyTorch Lightning 增強代碼可讀性

使用 PyTorch Lightning 的主要好處之一是它顯著簡化了訓練循環結構並使代碼更具可讀性。 LightningModule 封裝了神經網絡的核心組件,例如模型架構、訓練邏輯和驗證邏輯,使您能夠以模塊化方式管理這些元素。 因此,您可以更高效地開發和擴展模型,讓您更好地理解代碼,同時改善團隊成員之間的協作。

相關文章: