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

Discriminator

เมื่อกำหนด generator เสร็จแล้ว ขั้นตอนถัดไปในการสร้าง GAN คือการสร้าง discriminator ซึ่งรับ output ของ generator เป็น input และให้ผลลัพธ์เป็นการทำนายแบบ binary ว่า input นั้นถูกสร้างขึ้นหรือเป็นภาพจริง

torch.nn ถูก import ไว้ให้แล้วในชื่อ nn และมีฟังก์ชัน disc_block() สำหรับใช้งาน ซึ่งคืนค่าบล็อกที่ประกอบด้วย linear layer ตามด้วย LeakyReLU activation โดยจะนำมาใช้เป็นหน่วยพื้นฐานในการสร้าง discriminator

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.LeakyReLU(0.2)
    )

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

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

ดูคอร์ส

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

  • เพิ่ม discriminator block ตัวสุดท้ายเข้าไปในโมเดล โดยกำหนดขนาด input ให้เหมาะสมและขนาด output เป็น 256
  • หลัง discriminator block ตัวสุดท้าย ให้เพิ่ม linear layer เพื่อแมป output ให้มีขนาดเป็น 1
  • กำหนดเมธอด forward() เพื่อส่ง input image ผ่าน sequential block ที่กำหนดไว้ใน __init__()

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

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

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            disc_block(im_dim, 1024),
            disc_block(1024, 512),
            # Define last discriminator block
            ____,
            # Add a linear layer
            ____,
        )

    def forward(self, x):
        # Define the forward method
        ____
แก้ไขและรันโค้ด