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

Generator Loss

ก่อนที่จะฝึก GAN ได้ จำเป็นต้องกำหนดฟังก์ชัน loss สำหรับทั้ง generator และ discriminator โดยจะเริ่มต้นด้วย generator ก่อน

จำไว้ว่างานของ generator คือการสร้างภาพปลอมที่สามารถหลอก discriminator ให้จำแนกภาพเหล่านั้นว่าเป็นภาพจริง ดังนั้น generator จะเกิด loss เมื่อ discriminator จำแนกภาพที่สร้างขึ้นว่าเป็นภาพปลอม (label 0)

กำหนดฟังก์ชัน gen_loss() สำหรับคำนวณ generator loss โดยรับอาร์กิวเมนต์ 4 ตัว ได้แก่

  • gen — โมเดล generator
  • disc — โมเดล discriminator
  • num_images — จำนวนภาพใน batch
  • z_dim — ขนาดของ random noise ที่ใช้เป็น input

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

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

ดูคอร์ส

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

  • สร้าง random noise ที่มีรูปร่างขนาด num_images คูณ z_dim แล้วกำหนดให้กับตัวแปร noise
  • ใช้ generator สร้างภาพปลอมจาก noise แล้วกำหนดให้กับตัวแปร fake
  • รับค่าการทำนายของ discriminator สำหรับภาพปลอมที่สร้างขึ้น
  • คำนวณ generator loss โดยเรียกใช้ criterion กับค่าการทำนายของ discriminator และ tensor ของเลข 1 ที่มีรูปร่างเดียวกัน

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

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

def gen_loss(gen, disc, criterion, num_images, z_dim):
    # Define random noise
    noise = ____(num_images, z_dim)
    # Generate fake image
    fake = ____
    # Get discriminator's prediction on the fake image
    disc_pred = ____
    # Compute generator loss
    criterion = nn.BCEWithLogitsLoss()
    gen_loss = ____(____, ____)
    return gen_loss
แก้ไขและรันโค้ด