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
PyTorch ile Görüntüler için Deep Learning
kursunun bir parçasıdırEgzersiz 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ı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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)