開始使用免費開始

產生器(Generator)

GAN 的產生器會把隨機雜訊向量當作輸入,並產生影像作為輸出。為了讓架構更容易重複使用,你會將輸入與輸出形狀作為參數傳入模型。如此一來,就能用相同的模型來處理不同大小的輸入雜訊與各種形狀的影像。

在此練習中,torch.nn 已經以 nn 名稱幫你匯入。你也可以使用自訂的 gen_block() 函式,它會回傳一個包含:線性層、批次正規化,以及 ReLU 活化的模組區塊。你將以此作為產生器的組裝積木。

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

本練習屬於課程

使用 PyTorch 進行影像深度學習

檢視課程

練習說明

  • self.generator 定義為序列式模型。
  • 在最後一個 gen_block 之後,加入一個線性層,其輸入大小需對應前一層的輸出,輸出大小為 out_dim
  • 在該線性層後面加入 sigmoid 活化。
  • 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 ____
編輯並執行程式碼