Generator Loss
ก่อนที่จะฝึก GAN ได้ จำเป็นต้องกำหนดฟังก์ชัน loss สำหรับทั้ง generator และ discriminator โดยจะเริ่มต้นด้วย generator ก่อน
จำไว้ว่างานของ generator คือการสร้างภาพปลอมที่สามารถหลอก discriminator ให้จำแนกภาพเหล่านั้นว่าเป็นภาพจริง ดังนั้น generator จะเกิด loss เมื่อ discriminator จำแนกภาพที่สร้างขึ้นว่าเป็นภาพปลอม (label 0)
กำหนดฟังก์ชัน gen_loss() สำหรับคำนวณ generator loss โดยรับอาร์กิวเมนต์ 4 ตัว ได้แก่
gen— โมเดล generatordisc— โมเดล discriminatornum_images— จำนวนภาพใน batchz_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