
У світі глибокого навчання та нейронних мереж, що швидко розвивається, бібліотеки та фреймворки є важливими для спрощення та прискорення процесу розробки. 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' ми обчислимо наш прогноз і тензори істинності, а також розрахуємо точність за допомогою метричної функції 'accuracy', наданої 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 інкапсулює основні компоненти нейронної мережі, такі як архітектура моделі, логіка навчання та логіка перевірки, надаючи вам можливість керувати цими елементами модульним способом. У результаті ви можете ефективніше розробляти та масштабувати свої моделі, даючи вам краще розуміння коду, а також покращуючи співпрацю між членами команди.