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

Training loop

ถึงเวลาที่ความพยายามทั้งหมดในการกำหนด architecture ของโมเดลและ loss function จะได้รับผลลัพธ์จริง: ได้เวลาเทรนโมเดลแล้ว! หน้าที่ของคุณคือสร้างและรัน training loop ของ GAN โปรดทราบว่ามีคำสั่ง break วางไว้หลัง batch แรกของข้อมูล เพื่อป้องกันไม่ให้ใช้เวลารันนานเกินไป

ออปติไมเซอร์ทั้งสองตัว ได้แก่ disc_opt และ gen_opt ถูก initialize เป็นออปติไมเซอร์แบบ Adam() แล้ว ฟังก์ชันสำหรับคำนวณ loss ที่คุณกำหนดไว้ก่อนหน้านี้ ได้แก่ gen_loss() และ disc_loss() พร้อมใช้งานแล้ว รวมถึง dataloader ที่เตรียมไว้ให้แล้วเช่นกัน

ระลึกไว้ว่า:

  • อาร์กิวเมนต์ของ disc_loss() ได้แก่: gen, disc, real, cur_batch_size, z_dim
  • อาร์กิวเมนต์ของ gen_loss() ได้แก่: gen, disc, cur_batch_size, z_dim

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

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

ดูคอร์ส

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

  • คำนวณ discriminator loss โดยใช้ disc_loss() โดยส่ง generator, discriminator, ตัวอย่างภาพจริง, ขนาด batch ปัจจุบัน และขนาด noise เป็น 16 ตามลำดับนี้ แล้วกำหนดผลลัพธ์ให้กับ d_loss
  • คำนวณ gradient โดยใช้ d_loss
  • คำนวณ generator loss โดยใช้ gen_loss() โดยส่ง generator, discriminator, ขนาด batch ปัจจุบัน และขนาด noise เป็น 16 ตามลำดับนี้ แล้วกำหนดผลลัพธ์ให้กับ g_loss
  • คำนวณ gradient โดยใช้ g_loss

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

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

for epoch in range(1):
    for real in dataloader:
        cur_batch_size = len(real)
        
        disc_opt.zero_grad()
        # Calculate discriminator loss
        d_loss = ____
        # Compute gradients
        ____
        disc_opt.step()

        gen_opt.zero_grad()
        # Calculate generator loss
        g_loss = ____
        # Compute generator gradients
        ____
        gen_opt.step()

        print(f"Generator loss: {g_loss}")
        print(f"Discriminator loss: {d_loss}")
        break
แก้ไขและรันโค้ด