Présentation du modèle DCGAN pour Cifar 10 avec keras

Aperçu

«Comme je n'ai pas le temps, j'omettrai pour le moment le mécanisme du GAN.

Paramètres du modèle

Generator

generator


def _build_generator(self) -> Model:
    start_pix_x = 4
    start_pix_y = 4
    kernel_ini = RandomNormal(mean=0.0, stddev=0.02)

    inputs = Input(shape=self.noise_shape)
    x = Dense(
        units=256*start_pix_x*start_pix_y,
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(inputs)
    x = LeakyReLU(alpha=0.2)(x)
    x = Reshape((start_pix_x, start_pix_y, 256))(x)
    x = Conv2DTranspose(
        filters=128,
        kernel_size=4,
        strides=2,
        padding='same',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    # x = BatchNormalization(axis=3)(x)
    x = Conv2DTranspose(
        filters=128,
        kernel_size=4,
        strides=2,
        padding='same',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    # x = BatchNormalization(axis=3)(x)
    x = Conv2DTranspose(
        filters=128,
        kernel_size=4,
        strides=2,
        padding='same',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    x = Conv2D(
        filters=3,
        kernel_size=3,
        padding='same',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)

    y = Activation('tanh')(x)

    model = Model(inputs, y)
    if self.verbose:
        model.summary()

    return model

Discriminator

discriminator


def _build_discriminator(self) -> Model:
    kernel_ini = RandomNormal(mean=0.0, stddev=0.02)
    inputs = Input(shape=self.shape)
    x = GaussianNoise(stddev=0.05)(inputs)  # prevent d from overfitting.
    x = Conv2D(
        filters=64,
        kernel_size=3,
        padding='SAME',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    # x = Dropout(0.5)(x)
    x = Conv2D(
        filters=128,
        kernel_size=3,
        strides=2,
        padding='SAME',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    # x = Dropout(0.5)(x)
    # x = BatchNormalization(axis=3)(x)
    x = Conv2D(
        filters=128,
        kernel_size=3,
        strides=2,
        padding='SAME',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)
    # x = Dropout(0.5)(x)
    # x = BatchNormalization(axis=3)(x)
    x = Conv2D(
        filters=256,
        kernel_size=3,
        strides=2,
        padding='SAME',
        kernel_initializer=kernel_ini,
        bias_initializer='zeros')(x)
    x = LeakyReLU(alpha=0.2)(x)

    x = Flatten()(x)
    features = Dropout(0.4)(x)

    validity = Dense(1, activation='sigmoid')(features)

    model4d = Model(inputs, validity)
    model4g = Model(inputs, validity)
    if self.verbose:
        model4d.summary()

    return model4d, model4g

Résultat de sortie

La ligne de sortie correspond à la classe. DCGAN génère uniquement une image, mais l'image générée est entrée dans le modèle d'apprentissage construit à partir de l'image d'origine, étiquetée selon l'étiquette prédite, et l'image est sortie pour chaque classe de prédiction. En mettant LeakyReLU dans le générateur, je sens que l'objet de l'objet peut être généré plus fermement. original2dcgan.png

Conclusion

Je l'ai fait à la hâte, je vais donc l'écrire en détail à une date ultérieure.

Recommended Posts

Présentation du modèle DCGAN pour Cifar 10 avec keras
Tutoriel CIFAR-10 avec Keras
Calibrer le modèle avec PyCaret
Comparez DCGAN et pix2pix avec Keras
Validez le modèle d'entraînement avec Pylearn2
Affinons les hyper paramètres du modèle avec scikit-learn!
Défiez la classification des images avec TensorFlow2 + Keras CNN 1 ~ Bougez pour le moment ~
Rechercher des fichiers avec l'extension spécifiée
Attention Seq2 Exécutez le modèle de dialogue avec Seq
La troisième nuit de la boucle avec pour
La deuxième nuit de la boucle avec pour
J'ai implémenté le modèle VGG16 avec Keras et essayé d'identifier CIFAR10
Un modèle qui identifie la guitare avec fast.ai
Premiers pas avec la traduction japonaise du modèle séquentiel Keras
Utilisez Logger avec Python pour le moment
J'ai joué avec Floydhub pour le moment
Résolution du modèle Lorenz 96 avec Julia et Python
Chargez le fichier de modèle TensorFlow .pb avec readNetFromTensorflow ().
Création d'une image trompeuse pour le modèle de génération de légende
Ajouter des attributs d'objets de classe avec une instruction for
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Utilisez le kit Cognitive Took (CNTK) avec le backend Keras
Identifiez le nom de l'image de la fleur avec des keras (flux tenseur)
[Boto3] Rechercher des utilisateurs Cognito avec l'API List Users
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Bilan du premier défi du machine learning avec Keras
Découvrez Wasserstein GAN avec le modèle Keras et l'optimisation TensorFlow
[Pour les débutants] Quantifier la similitude des phrases avec TF-IDF