เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Convolutional Discriminator

เมื่อ generator ของ DCGAN พร้อมแล้ว ขั้นตอนสุดท้ายก่อนจะไปถึงการเทรนคือการกำหนด convolutional discriminator

torch.nn ถูก import ไว้ให้แล้วตามชื่อย่อปกติ ในการสร้าง convolutional discriminator นี้จะใช้ฟังก์ชัน dc_disc_block() ซึ่งรีเทิร์นบล็อกที่ประกอบด้วย convolution ตามด้วย batch norm และ leaky ReLU activation ดูการกำหนดฟังก์ชัน dc_disc_block() ได้ด้านล่าง

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

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Learning สำหรับภาพด้วย PyTorch

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เพิ่ม discriminator block แรกโดยใช้ฟังก์ชัน dc_disc_block() โดยกำหนด input feature maps เป็น 3 และ output feature maps เป็น 512
  • เพิ่ม convolutional layer ที่มี output size เป็น 1
  • ใน method forward() ให้ส่ง input ผ่าน sequential block ที่กำหนดไว้ใน __init__()

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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)
แก้ไขและรันโค้ด