Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(
self,
encoding_dims=100,
out_size=32,
out_channels=3,
step_channels=64,
batchnorm=True,
nonlinearity=None,
last_nonlinearity=None,
label_type="none",
):
super(DCGANGenerator, self).__init__(encoding_dims, label_type)
if out_size < 16 or ceil(log2(out_size)) != log2(out_size):
raise Exception(
"Target Image Size must be at least 16*16 and an exact power of 2"
)
num_repeats = out_size.bit_length() - 4
self.ch = out_channels
self.n = step_channels
use_bias = not batchnorm
nl = nn.LeakyReLU(0.2) if nonlinearity is None else nonlinearity
last_nl = nn.Tanh() if last_nonlinearity is None else last_nonlinearity
model = []
d = int(self.n * (2 ** num_repeats))
if batchnorm is True:
model.append(
nn.Sequential(
nn.ConvTranspose2d(self.encoding_dims, d, 4, 1, 0, bias=use_bias),
import torch
import torch.distributions as distributions
import torch.nn as nn
import torch.nn.functional as F
from .dcgan import DCGANDiscriminator, DCGANGenerator
__all__ = ["InfoGANGenerator", "InfoGANDiscriminator"]
class InfoGANGenerator(DCGANGenerator):
r"""Generator for InfoGAN based on the Deep Convolutional GAN (DCGAN) architecture, from
`"InfoGAN : Interpretable Representation Learning With Information Maximizing Generative Aversarial Nets
by Chen et. al. " `_ paper
Args:
dim_dis (int): Dimension of the discrete latent code sampled from the prior.
dim_cont (int): Dimension of the continuous latent code sampled from the prior.
encoding_dims (int, optional): Dimension of the encoding vector sampled from the noise prior.
out_size (int, optional): Height and width of the input image to be generated. Must be at
least 16 and should be an exact power of 2.
out_channels (int, optional): Number of channels in the output Tensor.
step_channels (int, optional): Number of channels in multiples of which the DCGAN steps up
the convolutional features. The step up is done as dim :math:`z \rightarrow d \rightarrow
2 \times d \rightarrow 4 \times d \rightarrow 8 \times d` where :math:`d` = step_channels.
batchnorm (bool, optional): If True, use batch normalization in the convolutional layers of
the generator.
import torch
import torch.nn as nn
import torch.nn.functional as F
from .dcgan import DCGANDiscriminator, DCGANGenerator
__all__ = ["ConditionalGANGenerator", "ConditionalGANDiscriminator"]
class ConditionalGANGenerator(DCGANGenerator):
r"""Conditional GAN (CGAN) generator based on a DCGAN model from
`"Conditional Generative Adversarial Nets
by Mirza et. al. " `_ paper
Args:
num_classes (int): Total classes present in the dataset.
encoding_dims (int, optional): Dimension of the encoding vector sampled from the noise prior.
out_size (int, optional): Height and width of the input image to be generated. Must be at
least 16 and should be an exact power of 2.
out_channels (int, optional): Number of channels in the output Tensor.
step_channels (int, optional): Number of channels in multiples of which the DCGAN steps up
the convolutional features. The step up is done as dim :math:`z \rightarrow d \rightarrow
2 \times d \rightarrow 4 \times d \rightarrow 8 \times d` where :math:`d` = step_channels.
batchnorm (bool, optional): If True, use batch normalization in the convolutional layers of
the generator.
nonlinearity (torch.nn.Module, optional): Nonlinearity to be used in the intermediate
import torch
import torch.nn as nn
import torch.nn.functional as F
from .dcgan import DCGANDiscriminator, DCGANGenerator
__all__ = ["ACGANGenerator", "ACGANDiscriminator"]
class ACGANGenerator(DCGANGenerator):
r"""Auxiliary Classifier GAN (ACGAN) generator based on a DCGAN model from
`"Conditional Image Synthesis With Auxiliary Classifier GANs
by Odena et. al. " `_ paper
Args:
num_classes (int): Total classes present in the dataset.
encoding_dims (int, optional): Dimension of the encoding vector sampled from the noise prior.
out_size (int, optional): Height and width of the input image to be generated. Must be at
least 16 and should be an exact power of 2.
out_channels (int, optional): Number of channels in the output Tensor.
step_channels (int, optional): Number of channels in multiples of which the DCGAN steps up
the convolutional features. The step up is done as dim :math:`z \rightarrow d \rightarrow
2 \times d \rightarrow 4 \times d \rightarrow 8 \times d` where :math:`d` = step_channels.
batchnorm (bool, optional): If True, use batch normalization in the convolutional layers of
the generator.
nonlinearity (torch.nn.Module, optional): Nonlinearity to be used in the intermediate