Evrişimsel Üreteç
Son videoda tartışılan DCGAN yönergelerini izleyerek bir evrişimsel üreteç tanımla.
Kolaylık olması için torch.nn senin için nn olarak önceden içe aktarıldı. Ayrıca, transpoze evrişim, batch norm ve ReLU aktivasyonundan oluşan bir blok döndüren özel bir dc_gen_block() fonksiyonu mevcut. Bu fonksiyon, evrişimsel üreteci kurarken temel bir yapı taşı olarak hizmet eder. Aşağıda dc_gen_block() tanımını inceleyebilirsin.
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()
)
Bu egzersiz, kursun bir parçasıdır
PyTorch ile Görüntüler için Deep Learning
Egzersiz talimatları
- Özellik haritalarının boyutunu
256'ya eşleyecek son üretici bloğunu ekle. - Çıkış boyutu
3olan bir transpoze evrişim ekle. - tanh aktivasyonunu ekle.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)