Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
    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()