MulaiMulai sekarang secara gratis

Discriminator Konvolusional

Dengan generator DCGAN siap, langkah terakhir sebelum Anda dapat melanjutkan ke pelatihan adalah mendefinisikan discriminator konvolusional.

torch.nn telah diimpor untuk Anda dengan alias biasanya. Untuk membangun discriminator konvolusional, Anda akan menggunakan fungsi kustom gc_disc_block() yang mengembalikan sebuah blok berisi konvolusi diikuti oleh batch norm dan aktivasi leaky ReLU. Anda dapat meninjau definisi dc_disc_block() di bawah ini.

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),
    )

Latihan ini adalah bagian dari kursus

Deep Learning untuk Gambar dengan PyTorch

Lihat Kursus

Petunjuk latihan

  • Tambahkan blok discriminator pertama menggunakan fungsi kustom dc_disc_block() dengan 3 peta fitur masukan dan 512 peta fitur keluaran.
  • Tambahkan layer konvolusional dengan ukuran keluaran 1.
  • Dalam metode forward(), teruskan masukan melalui blok sequential yang Anda definisikan dalam __init__().

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
Edit dan Jalankan Kode