in generation/models/networks.py [0:0]
def __init__(self, input_nc, ndf=64, n_layers=3,
use_sigmoid=False, getIntermFeat=False):
super(NLayerSNDiscriminator, self).__init__()
self.getIntermFeat = getIntermFeat
self.n_layers = n_layers
kw = 4
padw = int(np.ceil((kw-1.0)/2))
self.conv1 = SpectralNorm(
nn.Conv2d(input_nc, ndf, kw, stride=2, padding=padw))
# self.conv1 = nn.Conv2d(input_nc, ndf, kw, stride=2, padding=padw)
self.conv_others = []
nf = ndf
for n in range(1, n_layers):
nf_prev = nf
nf = min(nf * 2, 512)
# self.conv_others.append(
# nn.Conv2d(nf_prev, nf,
# kernel_size=kw, stride=2,
# padding=padw))
self.conv_others.append(
SpectralNorm(
nn.Conv2d(nf_prev, nf,
kernel_size=kw, stride=2,
padding=padw)))
sequence = [[self.conv1,
nn.LeakyReLU(0.2, True)]]
nf = ndf
for n in range(1, n_layers):
nf_prev = nf
nf = min(nf * 2, 512)
sequence += [[
self.conv_others[n - 1],
# norm_layer(nf),
nn.LeakyReLU(0.2, True)
]]
nf_prev = nf
nf = min(nf * 2, 512)
self.conv_final1 = SpectralNorm(
nn.Conv2d(nf_prev, nf, kernel_size=kw, stride=1, padding=padw))
# self.conv_final1 = nn.Conv2d(
# nf_prev, nf, kernel_size=kw, stride=1, padding=padw)
sequence += [[
self.conv_final1,
# norm_layer(nf),
nn.LeakyReLU(0.2, True)
]]
self.conv_final2 = SpectralNorm(
nn.Conv2d(nf, 1, kernel_size=kw, stride=1, padding=padw))
# self.conv_final2 = nn.Conv2d(
# nf, 1, kernel_size=kw, stride=1, padding=padw)
sequence += [[self.conv_final2]]
if use_sigmoid:
sequence += [[nn.Sigmoid()]]
if getIntermFeat:
for n in range(len(sequence)):
setattr(self, 'model'+str(n), nn.Sequential(*sequence[n]))
else:
sequence_stream = []
for n in range(len(sequence)):
sequence_stream += sequence[n]
self.model = nn.Sequential(*sequence_stream)