BaşlayınÜcretsiz başlayın

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, kursun bir parçasıdır

PyTorch ile Görüntüler için Deep Learning

Kursa Göz Atın

Egzersiz talimatları

  • İlk ayrıştırıcı bloğunu, 3 giriş özellik haritası ve 512 çıkış özellik haritasıyla özel dc_disc_block() fonksiyonunu kullanarak ekle.
  • Çıkış boyutu 1 olan evrişim katmanını ekle.
  • forward() metodunda, girişi __init__() içinde tanımladığın sıralı bloktan geçir.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

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)
Kodu Düzenle ve Çalıştır