Original: [Version TensorFlow]
Mise en œuvre du pytorch de divers Gans.
Ce référentiel a été réimplémenté en référence aux collections de modélisation de TensorFlow-Generative par Hwalsuk Lee
J'ai essayé d'implémenter ce référentiel autant que possible avec les collections de modélisation de TensorFlow-Generative, mais certains modèles sont un peu différents.
Ce référentiel est inclus de code pour le mode CPU Pytorch, mais je n'ai pas testé. J'ai testé uniquement en mode GPU Pytorch.
| Nom | Lien papier | Fonction de valeur |
|---|---|---|
| Gan | Arxiv | ![]() |
| Lsgan | Arxiv | ![]() |
| Wgan | Arxiv | ![]() |
| Wgan_gp | Arxiv | ![]() |
| Dragan | Arxiv | ![]() |
| Cgan | Arxiv | ![]() |
| infogan | Arxiv | ![]() |
| Acgan | Arxiv | ![]() |
| EBGAN | Arxiv | ![]() |
| A COMMENCÉ | Arxiv | ![]() |

L'architecture de réseau du générateur et du discriminateur est les noms Exaclty comme dans le papier infogan.
Pour une comparaison équitable des idées de base dans toutes les variantes Gan, toutes les implémentations de l'architecture de réseau sont maintenues à l'exception d'Ebgan et ont commencé. Une petite modification est apportée à EBGAN / a commencé, car celles-ci adoptent le strucutre autocodeur pour le discriminateur. Mais j'ai essayé de garder la capacité de Datiminator.
Les résultats suivants peuvent être reproduits avec la commande:
python main.py --dataset mnist --gan_type <TYPE> --epoch 50 --batch_size 64
Tous les résultats sont générés à partir du vecteur de bruit fixe.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| Gan | ![]() | ![]() | ![]() | ![]() |
| Lsgan | ![]() | ![]() | ![]() | ![]() |
| Wgan | ![]() | ![]() | ![]() | ![]() |
| Wgan_gp | ![]() | ![]() | ![]() | ![]() |
| Dragan | ![]() | ![]() | ![]() | ![]() |
| EBGAN | ![]() | ![]() | ![]() | ![]() |
| A COMMENCÉ | ![]() | ![]() | ![]() | ![]() |
Chaque ligne a le même vecteur de bruit et chaque colonne a la même condition d'étiquette.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| Cgan | ![]() | ![]() | ![]() | ![]() |
| Acgan | ![]() | ![]() | ![]() | ![]() |
| infogan | ![]() | ![]() | ![]() | ![]() |
Tous les résultats ont le même vecteur de bruit et la même condition d'étiquette, mais ont un vecteur continu différent.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| infogan | ![]() | ![]() | ![]() | ![]() |
| Nom | Perte |
|---|---|
| Gan | ![]() |
| Lsgan | ![]() |
| Wgan | ![]() |
| Wgan_gp | ![]() |
| Dragan | ![]() |
| EBGAN | ![]() |
| A COMMENCÉ | ![]() |
| Cgan | ![]() |
| Acgan | ![]() |
| infogan | ![]() |
Des commentaires sur l'architecture réseau dans MNIST sont également appliqués ici.
Fashion-Mnist est un ensemble de données récemment proposé composé d'un ensemble de formation de 60 000 exemples et d'un ensemble de tests de 10 000 exemples. Chaque exemple est une image en niveaux de gris 28x28, associée à une étiquette de 10 classes. (T-shirt / haut, pantalon, pull, robe, manteau, sandale, chemise, sneaker, sac, botte de cheville)
Les résultats suivants peuvent être reproduits avec la commande:
python main.py --dataset fashion-mnist --gan_type <TYPE> --epoch 50 --batch_size 64
Tous les résultats sont générés à partir du vecteur de bruit fixe.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| Gan | ![]() | ![]() | ![]() | ![]() |
| Lsgan | ![]() | ![]() | ![]() | ![]() |
| Wgan | ![]() | ![]() | ![]() | ![]() |
| Wgan_gp | ![]() | ![]() | ![]() | ![]() |
| Dragan | ![]() | ![]() | ![]() | ![]() |
| EBGAN | ![]() | ![]() | ![]() | ![]() |
| A COMMENCÉ | ![]() | ![]() | ![]() | ![]() |
Chaque ligne a le même vecteur de bruit et chaque colonne a la même condition d'étiquette.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| Cgan | ![]() | ![]() | ![]() | ![]() |
| Acgan | ![]() | ![]() | ![]() | ![]() |
| infogan | ![]() | ![]() | ![]() | ![]() |
Tous les résultats ont le même vecteur de bruit et la même condition d'étiquette, mais ont un vecteur continu différent.
| Nom | Époque 1 | Époque 25 | Époque 50 | Gif |
|---|---|---|---|---|
| infogan | ![]() | ![]() | ![]() | ![]() |
| Nom | Perte |
|---|---|
| Gan | ![]() |
| Lsgan | ![]() |
| Wgan | ![]() |
| Wgan_gp | ![]() |
| Dragan | ![]() |
| EBGAN | ![]() |
| A COMMENCÉ | ![]() |
| Cgan | ![]() |
| Acgan | ![]() |
| infogan | ![]() |
Ce qui suit montre la structure des dossiers de base.
├── main.py # gateway
├── data
│ ├── mnist # mnist data (not included in this repo)
│ ├── ...
│ ├── ...
│ └── fashion-mnist # fashion-mnist data (not included in this repo)
│
├── GAN.py # vainilla GAN
├── utils.py # utils
├── dataloader.py # dataloader
├── models # model files to be saved here
└── results # generation results to be saved here
Cette implémentation a été basée sur des collections de modélisation de TensorFlow-Generative et testées avec Pytorch 0.4.0 sur Ubuntu 16.04 en utilisant GPU.