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
Petunjuk latihan
- Tambahkan blok discriminator pertama menggunakan fungsi kustom
dc_disc_block()dengan3peta fitur masukan dan512peta 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)