def __init__(self, num_features, num_classes, activation=F.relu, dim_emb=128): super(SNResNetConcatDiscriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.dim_emb = dim_emb self.activation = activation self.block1 = OptimizedBlock(3, num_features) self.block2 = Block(num_features, num_features * 2, activation=activation, downsample=True) self.block3 = Block(num_features * 2, num_features * 4, activation=activation, downsample=True) if num_classes > 0: self.l_y = utils.spectral_norm(nn.Embedding(num_classes, dim_emb)) self.block4 = Block(num_features * 4 + dim_emb, num_features * 8, activation=activation, downsample=True) self.block5 = Block(num_features * 8, num_features * 16, activation=activation, downsample=True) self.l6 = utils.spectral_norm(nn.Linear(num_features * 16, 1)) self._initialize()
def __init__(self, num_features=64, num_classes=0, activation=F.relu): super(SNResNetProjectionDiscriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.activation = activation self.block1 = OptimizedBlock(1, num_features) self.block2 = Block(num_features, num_features * 2, activation=activation, downsample=True) self.block3 = Block(num_features * 2, num_features * 4, activation=activation, downsample=True) self.block4 = Block(num_features * 4, num_features * 8, activation=activation, downsample=True) self.block5 = Block(num_features * 8, num_features * 16, activation=activation, downsample=True) self.l6 = utils.spectral_norm(nn.Linear(num_features * 16, 1)) if num_classes > 0: self.l_y = utils.spectral_norm( nn.Embedding(num_classes, num_features * 16)) self._initialize()
def __init__(self, num_features=64, num_classes=0, activation=F.relu): super(VGG_Discriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.activation = activation self.block1 = OptimizedBlock(3, num_features // 4) self.block2 = Block(num_features // 4, num_features // 2, activation=activation, downsample=True) self.block3 = Block(num_features // 2, num_features, activation=activation, downsample=True) self.block4 = Block(num_features, num_features * 2, activation=activation, downsample=True) self.block5 = Block(num_features * 2, num_features * 4, activation=activation, downsample=True) self.l4 = utils.spectral_norm(nn.Linear(num_features * 4, 1)) self.linear_mi = nn.Linear(num_features * 4, num_classes) self.linear_c = nn.Linear(num_features * 4, num_classes) if num_classes > 0: self.l_y = utils.spectral_norm( nn.Embedding(num_classes, num_features * 4)) self._initialize()
def __init__(self, num_features=64, num_classes=0, activation=F.relu, transform_space=None): super(SNResNetProjectionDiscriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.activation = activation self.block1 = OptimizedBlock(3, num_features) self.block2 = Block(num_features, num_features * 2, activation=activation, downsample=True) self.block3 = Block(num_features * 2, num_features * 4, activation=activation, downsample=True) self.block4 = Block(num_features * 4, num_features * 8, activation=activation, downsample=True) self.block5 = Block(num_features * 8, num_features * 16, activation=activation, downsample=True) self.l6 = utils.spectral_norm(nn.Linear(num_features * 16, 1)) if transform_space is not None: # self.transformer = nn.Transformer(d_model=1024,nhead=4,num_encoder_layers=4).encoder encoder_layer = nn.TransformerEncoderLayer(d_model=1024, nhead=8) transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=4) self.transformer = transformer_encoder if transform_space == 'batch': self.transform_space = 'batch' elif transform_space == 'embeddings': self.transform_space = 'embeddings' else: print( "You specified a transform space but did not provide an appropriate one. Exiting" ) exit() else: #transform_space is None self.transform_space = None if num_classes > 0: self.l_y = utils.spectral_norm( nn.Embedding(num_classes, num_features * 16)) self._initialize()
def __init__(self, num_features=64, num_classes=0, activation=F.relu): super(Animal_Discriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.activation = activation self.block1 = OptimizedBlock(3, num_features // 8) # 128 self.block2 = Block(num_features // 8, num_features // 4, activation=activation, downsample=True) # 64 self.block3 = Block(num_features // 4, num_features // 2, activation=activation, downsample=True) # 32 self.block4 = Block(num_features // 2, num_features, activation=activation, downsample=True) # 16 self.block5 = Self_Attn(num_features) # 8 self.block6 = Block( num_features, num_features * 2, # 8 activation=activation, downsample=True) self.block7 = Block( num_features * 2, num_features * 4, # 4 activation=activation, downsample=True) self.l4 = utils.spectral_norm(nn.Linear(num_features * 4, 1)) if num_classes > 0: self.l_y = utils.spectral_norm( nn.Embedding(num_classes, num_features * 4)) self._initialize()
def __init__(self, num_features=32, num_classes=0, activation=F.relu): super(Omniglot_Discriminator, self).__init__() self.num_features = num_features self.num_classes = num_classes self.activation = activation self.block1 = OptimizedBlock(1, num_features) self.block2 = Block(num_features, num_features * 2, activation=activation, downsample=True) self.block3 = Self_Attn(num_features * 2) self.block4 = Block(num_features * 2, num_features * 4, activation=activation, downsample=True) self.l4 = utils.spectral_norm(nn.Linear(num_features * 4, 1)) if num_classes > 0: self.l_y = utils.spectral_norm( nn.Embedding(num_classes, num_features * 4)) self._initialize()