Generator convoluțional
Definește un generator convoluțional urmând recomandările DCGAN discutate în videoclipul anterior.
torch.nn a fost pre-importat ca nn pentru confortul tău. În plus, este disponibilă o funcție personalizată dc_gen_block(), care returnează un bloc format dintr-o convoluție transpusă, normalizare batch și activare ReLU. Această funcție reprezintă o componentă de bază pentru construirea generatorului convoluțional. Poți consulta definiția funcției dc_gen_block() mai jos.
def dc_gen_block(in_dim, out_dim, kernel_size, stride):
return nn.Sequential(
nn.ConvTranspose2d(in_dim, out_dim, kernel_size, stride=stride),
nn.BatchNorm2d(out_dim),
nn.ReLU()
)
Acest exercițiu face parte din cursul
Deep Learning pentru imagini cu PyTorch
Instrucțiuni pentru exercițiu
- Adaugă ultimul bloc al generatorului, care mapează dimensiunea hărților de caracteristici la
256. - Adaugă o convoluție transpusă cu dimensiunea de ieșire
3. - Adaugă activarea tanh.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
class DCGenerator(nn.Module):
def __init__(self, in_dim, kernel_size=4, stride=2):
super(DCGenerator, self).__init__()
self.in_dim = in_dim
self.gen = nn.Sequential(
dc_gen_block(in_dim, 1024, kernel_size, stride),
dc_gen_block(1024, 512, kernel_size, stride),
# Add last generator block
____,
# Add transposed convolution
____(____, ____, kernel_size, stride=stride),
# Add tanh activation
____
)
def forward(self, x):
x = x.view(len(x), self.in_dim, 1, 1)
return self.gen(x)