in separate_vae/models/pix2pixhd_networks.py [0:0]
def __init__(self, input_nc, z_nc, ngf=64, K=16, bottleneck='2d', n_downsampling=3, n_blocks=9, max_mult=16,
norm_layer=nn.BatchNorm2d, padding_type='reflect', vaeLike=False):
assert(n_blocks >= 0)
super(D_NLayers, self).__init__()
self.vaeLike = vaeLike
self.bottleneck = bottleneck
activation = nn.ReLU(True)
ngf = int(ngf/K)
if self.bottleneck == '1d':
# Additional ConvTranspose2d to upsample from 1x1 to 2x2
model = [nn.ConvTranspose2d(z_nc, ngf * max_mult, kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(ngf * max_mult)]
mult = 2**(n_downsampling)
if mult > max_mult:
model += [nn.ConvTranspose2d(ngf * max_mult, ngf * max_mult, kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(ngf * max_mult), activation]
else:
model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2), kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(int(ngf * mult / 2)), activation]
else:
mult = 2**(n_downsampling)
if mult > max_mult:
model = [nn.ConvTranspose2d(ngf * max_mult, ngf * max_mult, kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(ngf * max_mult), activation]
else:
model = [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2), kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(int(ngf * mult / 2)), activation]
### upsample
for i in range(1, n_downsampling):
mult = 2**(n_downsampling - i)
if mult > max_mult:
model += [nn.ConvTranspose2d(ngf * max_mult, ngf * max_mult, kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(ngf * max_mult), activation]
else:
model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2), kernel_size=3, stride=2, padding=1, output_padding=1),
norm_layer(int(ngf * mult / 2)), activation]
model += [nn.ReflectionPad2d(3), nn.Conv2d(ngf, input_nc, kernel_size=7, padding=0), nn.Sigmoid()]
self.conv = nn.Sequential(*model)