Đã giải quyết: %27pytorch_lightning%27 không có thuộc tính %27metrics%27

Cập nhật lần cuối: 09/11/2023

%27pytorch_lightning%27 không có thuộc tính %27metrics%27Giới thiệu

Trong thế giới phát triển nhanh chóng của deep learning và mạng lưới thần kinh, các thư viện và framework rất cần thiết để đơn giản hóa và đẩy nhanh quá trình phát triển. PyTorch Lightning là một trong những thư viện mạnh mẽ như vậy được xây dựng dựa trên PyTorch phổ biến rộng rãi. Lightning được thiết kế để cho phép các Nhà khoa học dữ liệu và Kỹ sư ML dễ dàng mở rộng mô hình của họ, tránh mã soạn sẵn và cải thiện khả năng đọc tổng thể. Tuy nhiên, trong khi làm việc với PyTorch Lightning, bạn có thể thường gặp phải các sự cố như lỗi thuộc tính 'pytorch_lightning.metrics'. Trong bài viết này, chúng tôi sẽ giải quyết vấn đề và hướng dẫn bạn giải pháp, chia nhỏ mã để hiểu rõ hơn. Hơn nữa, chúng ta sẽ thảo luận về các thư viện và chức năng liên quan để giải quyết vấn đề này.

Giải pháp cho vấn đề

Một trong những vấn đề chính liên quan đến lỗi '%27pytorch_lightning%27 không có thuộc tính %27metrics%27' là bạn có thể đã cài đặt phiên bản cũ hơn của PyTorch Lightning không bao gồm mô-đun số liệu. Để khắc phục điều này, bạn chỉ cần nâng cấp PyTorch Lightning của mình lên phiên bản mới nhất bằng cách chạy lệnh sau:

pip install --upgrade pytorch-lightning

Giải thích từng bước về mã

Khi bạn đã cập nhật thư viện, chúng ta có thể bắt đầu làm việc với các chỉ số dựa trên Lightning của PyTorch. Bước đầu tiên là nhập các mô-đun cần thiết từ PyTorch Lightning. Chúng tôi sẽ sử dụng chỉ số Độ chính xác cho mục đích minh họa trong bài viết này.

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

Tiếp theo, hãy định nghĩa mạng thần kinh của chúng ta bằng cách sử dụng LightningModule làm lớp cơ sở. Bên trong các phương thức 'training_step' và 'validation_step', chúng tôi sẽ tính toán dự đoán của chúng tôi và các thang đo sự thật cơ bản, đồng thời tính toán độ chính xác bằng cách sử dụng hàm số liệu 'độ chính xác' do PyTorch Lightning cung cấp.

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

Cuối cùng, theo cấu trúc mã này, bạn sẽ có thể làm việc trơn tru với PyTorch Lightning-metrics mà không gặp phải lỗi thuộc tính đã đề cập.

Thư viện liên quan: Torchmetrics

  • Một thư viện khác đáng nói đến là Đo ngọn đuốc, một thư viện dựa trên PyTorch chuyên cung cấp các số liệu để đánh giá các mô hình học sâu. Thư viện Torchmetrics được tạo bởi cùng các nhà phát triển như PyTorch Lightning, đảm bảo khả năng tương thích và cung cấp một API đơn giản và nhất quán.
  • Torchmetrics cung cấp nhiều số liệu khác nhau như Độ chính xác, Độ chính xác, Thu hồi, điểm F1, v.v. Nó giảm bớt sự căng thẳng khi triển khai các chỉ số này theo cách thủ công và cho phép bạn tập trung vào các khía cạnh khác trong dự án của mình.

Nâng cao khả năng đọc mã với PyTorch Lightning

Một trong những lợi ích chính của việc sử dụng PyTorch Lightning là nó đơn giản hóa đáng kể cấu trúc vòng lặp đào tạo và làm cho mã dễ đọc hơn. LightningModule gói gọn các thành phần cốt lõi của mạng nơ-ron, chẳng hạn như kiến ​​trúc mô hình, logic đào tạo và logic xác thực, mang lại cho bạn khả năng quản lý các thành phần này theo cách mô-đun. Kết quả là bạn có thể phát triển và mở rộng quy mô các mô hình của mình hiệu quả hơn, giúp bạn hiểu rõ hơn về mã của mình đồng thời cải thiện sự cộng tác giữa các thành viên trong nhóm.

bài viết liên quan: