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

Generator

Generator ของ GAN รับเวกเตอร์ noise แบบสุ่มเป็นอินพุต แล้วสร้างภาพขึ้นมา เพื่อให้โครงสร้างโมเดลนำกลับมาใช้ซ้ำได้ง่าย เราจะส่งทั้งขนาดอินพุตและเอาต์พุตเป็น parameter ซึ่งทำให้สามารถใช้โมเดลเดิมกับ noise ขนาดต่างกัน และสร้างภาพที่มีขนาดหลากหลายได้

torch.nn ถูก import ไว้ให้แล้วในชื่อ nn นอกจากนี้ยังมีฟังก์ชัน gen_block() ที่กำหนดไว้ให้ ซึ่งจะคืนค่าบล็อกประกอบด้วย linear layer, batch norm และ ReLU activation ให้ใช้เป็น building block สำหรับ generator

def gen_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.BatchNorm1d(out_dim),
        nn.ReLU(inplace=True)
    )

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

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

ดูคอร์ส

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

  • กำหนด self.generator เป็นโมเดลแบบ sequential
  • หลัง gen_block ตัวสุดท้าย ให้เพิ่ม linear layer ที่มีขนาดอินพุตที่เหมาะสม และขนาดเอาต์พุตเป็น out_dim
  • เพิ่ม sigmoid activation ต่อจาก linear layer
  • ใน method forward() ให้ส่งอินพุตของโมเดลผ่าน self.generator

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

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

class Generator(nn.Module):
    def __init__(self, in_dim, out_dim):
        super(Generator, self).__init__()
        # Define generator block
        self.generator = ____(
            gen_block(in_dim, 256),
            gen_block(256, 512),
            gen_block(512, 1024),
          	# Add linear layer
            ____
            # Add activation
            ____
        )

    def forward(self, x):
      	# Pass input through generator
        return ____
แก้ไขและรันโค้ด