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

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

kursunun bir parçasıdır
Kursu Görüntüle

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