PyTorch Modeli
Model mimarisini tanımlamak için OOP yaklaşımını kullanacaksın. Bunun, bir model sınıfı oluşturmayı ve içine iki yöntem tanımlamayı gerektirdiğini hatırla:
.__init__(): kullanmak istediğin katmanları burada tanımlarsın;forward(): model girdileri geldiğinde onlara ne olacağını burada belirlersin; yani girdileri önceden tanımlanmış katmanlardan burada geçirirsin.
Üç doğrusal (linear) katman ve ReLU etkinleştirmeleri olan bir model oluşturalım. Son doğrusal katmandan sonra ise sigmoid etkinleştirme kullanman gerekiyor; bu, su içilebilirliği tahmini gibi ikili sınıflandırma görevleri için uygun bir seçimdir. İşte nn.Sequential() kullanılarak tanımlanmış model (muhtemelen buna daha aşinasındır):
net = nn.Sequential(
nn.Linear(9, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
nn.Linear(8, 1),
nn.Sigmoid(),
)
Hadi bu modeli bir sınıf olarak yeniden yazalım!
Bu egzersiz
PyTorch ile Orta Düzey Deep Learning
kursunun bir parçasıdırEgzersiz talimatları
.__init__()metodunda, verilen model tanımına karşılık gelen boyutlarda üç doğrusal katmanı tanımla ve bunları sırasıylaself.fc1,self.fc2veself.fc3olarak ata.forward()metodunda, model girdisix’i tüm katmanlardan geçir; ilk katmanda yapıldığı gibi, katmanların üstüne etkinleştirmeleri eklemeyi unutma.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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