判別器(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
____