開始使用免費開始

判別器(Discriminator)

在已經定義好產生器之後,建立 GAN 的下一步就是建構判別器。它會把產生器的輸出當作輸入,並產生二元預測:輸入是生成的還是真實的?

你會看到 torch.nn 已經替你匯入為 nn。你也可以使用客製的 disc_block() 函式,它會回傳一個由線性層接著 LeakyReLU 啟用函式所組成的區塊。你將以它作為判別器的組件。

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.LeakyReLU(0.2)
    )

本練習屬於課程

使用 PyTorch 進行影像深度學習

檢視課程

練習說明

  • 在模型中加入最後一個判別器區塊,使用正確的輸入維度,並讓輸出為 256
  • 在最後一個判別器區塊之後,加入線性層,將輸出映射為大小 1
  • 定義 forward() 方法,將輸入影像傳入在 __init__() 中定義的 sequential 區塊。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            disc_block(im_dim, 1024),
            disc_block(1024, 512),
            # Define last discriminator block
            ____,
            # Add a linear layer
            ____,
        )

    def forward(self, x):
        # Define the forward method
        ____
編輯並執行程式碼