Diskriminátor
Když máš generátor hotový, dalším krokem při stavbě GANu je sestavení diskriminátoru. Ten přijímá výstup generátoru jako vstup a produkuje binární predikci: je vstup vygenerovaný, nebo skutečný?
torch.nn je už naimportovaný jako nn. Máš také k dispozici pomocnou funkci disc_block(), která vrací blok složený z lineární vrstvy a aktivační funkce LeakyReLU. Použij ji jako stavební kámen diskriminátoru.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
Toto cvičení je součástí kurzu
Deep Learning pro obrázky s PyTorchem
Pokyny k cvičení
- Přidej poslední blok diskriminátoru do modelu se správnou velikostí vstupu a výstupem
256. - Za posledním blokem diskriminátoru přidej lineární vrstvu, která namapuje výstup na velikost
1. - Definuj metodu
forward()tak, aby vstupní obrázek prošel sekvenčním blokem definovaným v__init__().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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
____