ПочатиПочніть безкоштовно

Модель PyTorch

Ви використаєте ООП‑підхід, щоб визначити архітектуру моделі. Нагадаємо, що для цього потрібно створити клас моделі та визначити в ньому два методи:

  • .__init__(), у якому ви задаєте шари, які хочете використати;

  • forward(), у якому ви визначаєте, що відбувається з вхідними даними моделі після їх отримання; саме тут ви пропускаєте входи через попередньо визначені шари.

Створімо модель із трьома лінійними шарами та активаціями ReLU. Після останнього лінійного шару потрібна активація sigmoid, що добре підходить для задач бінарної класифікації, як‑от наше прогнозування придатності води до пиття. Ось модель, визначена за допомогою nn.Sequential(), із якою ви, ймовірно, вже знайомі:

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

Перепишімо цю модель як клас!

Ця вправа є частиною курсу

Середній рівень Deep Learning з PyTorch

Переглянути курс

Інструкції до вправи

  • У методі .__init__() визначте три лінійні шари з розмірами, що відповідають наведеному визначенню моделі, і прив'яжіть їх відповідно до self.fc1, self.fc2 та self.fc3.
  • У методі forward() пропустіть вхід моделі x через усі шари, не забуваючи додати активації після них — подібно до того, як це вже зроблено для першого шару.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        # Define the three linear layers
        self.fc1 = ____
        self.fc2 = ____
        self.fc3 = ____
        
    def forward(self, x):
        # Pass x through linear layers adding activations
        x = nn.functional.relu(self.fc1(x))
        x = ____
        x = ____
        return x
Редагувати та запускати код