Evrişimsel Ayrıştırıcı (Discriminator)
DCGAN'in üreticisi (generator) hazır olduğuna göre, eğitime geçmeden önceki son adım evrişimsel ayrıştırıcıyı tanımlamak.
torch.nn senin için her zamanki kısaltmasıyla içe aktarıldı. Evrişimsel ayrıştırıcıyı oluşturmak için, bir evrişim katmanı, ardından batch norm ve leaky ReLU aktivasyonundan oluşan bir blok döndüren özel gc_disc_block() fonksiyonunu kullanacaksın. Aşağıda dc_disc_block() tanımını inceleyebilirsin.
def dc_disc_block(in_dim, out_dim, kernel_size, stride):
return nn.Sequential(
nn.Conv2d(in_dim, out_dim, kernel_size, stride=stride),
nn.BatchNorm2d(out_dim),
nn.LeakyReLU(0.2),
)
Bu egzersiz
PyTorch ile Görüntüler için Deep Learning
kursunun bir parçasıdırEgzersiz talimatları
- İlk ayrıştırıcı bloğunu,
3giriş özellik haritası ve512çıkış özellik haritasıyla özeldc_disc_block()fonksiyonunu kullanarak ekle. - Çıkış boyutu
1olan evrişim katmanını ekle. forward()metodunda, girişi__init__()içinde tanımladığın sıralı bloktan geçir.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
class DCDiscriminator(nn.Module):
def __init__(self, kernel_size=4, stride=2):
super(DCDiscriminator, self).__init__()
self.disc = nn.Sequential(
# Add first discriminator block
dc_disc_block(3, 512, kernel_size, stride),
dc_disc_block(512, 1024, kernel_size, stride),
# Add a convolution
nn.Conv2d(1024, 1, kernel_size, stride=stride),
)
def forward(self, x):
# Pass input through sequential block
x = ____
return x.view(len(x), -1)