2017-09-24 1 views
0

enter image description here enter image description hereRéglage GAN hyperparam'etres

Comme le montrent les deux images ci-dessus, tandis que la formation d'un modèle DCGAN, le gradient est pas stable et fluctue greatly.Because de cette raison, le modèle ne peut pas dessiner une image parfaite , même pour dessiner une image qui soit reconnue par les yeux humains. Est-ce que quelqu'un peut me dire comment ajuster le paramètre tel que le taux de décrochage ou le taux d'apprentissage ou quelque chose d'autre pour rendre le modèle meilleur? Je serai très reconnaissant! Voici le modèle que je l'ai fait avant (Build avec Keras):

discriminateur:

taux apprendre

est 0,0005

taux d'abandon est de 0,6

batch_size est 25

dis=Sequential() 

dis.add(Conv2D(depth*1, 5, strides=2, input_shape=(56,56,3),padding='same',kernel_initializer='RandomNormal', bias_initializer='zeros')) 

dis.add(LeakyReLU(alpha=alp)) 

dis.add(Dropout(dropout)) 

dis.add(Conv2D(depth*2, 5, strides=2, padding='same',kernel_initializer='RandomNormal', bias_initializer='zeros')) 

dis.add(LeakyReLU(alpha=alp)) 

dis.add(Dropout(dropout)) 

dis.add(Conv2D(depth*4, 5, strides=2, padding='same',kernel_initializer='RandomNormal', bias_initializer='zeros')) 

dis.add(LeakyReLU(alpha=alp)) 

dis.add(Dropout(dropout)) 

dis.add(Conv2D(depth*8,5,strides=1,padding='same',kernel_initializer='RandomUniform', bias_initializer='zeros')) 

dis.add(LeakyReLU(alpha=alp)) 

dis.add(Dropout(dropout)) 

dis.add(Flatten()) 

dis.add(Dense(1)) 

dis.add(Activation('sigmoid')) 

dis.summary() 

dis.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=d_lr)) 

le générateur et le modèle GAN:

taux d'apprentissage est 0,0001

momentum est 0,9

gen=Sequential() 

gen.add(Dense(dim*dim*dep,input_dim=100)) 

gen.add(BatchNormalization(momentum=momentum)) 

gen.add(Activation('relu')) 

gen.add(Reshape((dim,dim,dep))) 

gen.add(Dropout(dropout)) 

gen.add(UpSampling2D()) 

gen.add(Conv2DTranspose(int(dep/2),5,padding='same',kernel_initializer='RandomNormal', bias_initializer='RandomNormal')) 

gen.add(BatchNormalization(momentum=momentum)) 

gen.add(Activation('relu')) 

gen.add(UpSampling2D()) 

gen.add(Conv2DTranspose(int(dep/4),5,padding='same',kernel_initializer='RandomNormal', bias_initializer='RandomNormal')) 

gen.add(BatchNormalization(momentum=momentum)) 

gen.add(Activation('relu')) 

gen.add(UpSampling2D()) 

gen.add(Conv2DTranspose(int(dep/8),5,padding='same',kernel_initializer='RandomNormal', bias_initializer='RandomNormal')) 

gen.add(BatchNormalization(momentum=momentum)) 

gen.add(Activation('relu')) 

gen.add(Conv2DTranspose(3,5,padding='same',kernel_initializer='RandomNormal', bias_initializer='RandomNormal')) 

gen.add(Activation('sigmoid')) 

gen.summary() 


GAN=Sequential() 

GAN.add(gen) 

GAN.add(dis) 

GAN.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=g_lr)) 
+0

Le discriminateur semble sain, mais pas le générateur. Je pensais que vous pourriez entraîner le générateur plus longtemps et diminuer le taux d'apprentissage. – lerner

Répondre

1

Stable Formation GAN est un problème de recherche ouvert. Néanmoins, je peux vous donner deux conseils. Si vous respectez la routine d'apprentissage GAN d'origine et n'avez pas une connaissance absolue de ce que vous faites, utilisez l'architecture DCGAN avec les hyperparamètres disponibles comme décrit dans leur document (https://arxiv.org/pdf/1511.06434.pdf%C3%AF%C2%BC%E2%80%B0). La formation au GAN est très instable et l'utilisation d'un autre hyperparamètre entraînera l'effondrement du mode ou la disparition des gradients.

Le chemin le plus facile avec GAN est d'utiliser le réseau Wasserstein. Ceux-ci sont assez stables avec des architectures abritrary. Cependant, je suggère fortement d'utiliser l'hyperparamètre suggéré dans leur article, car pour moi la formation s'est également effondrée pour différents hyperparamètres. Le WAN Wasserstein amélioré: [https://arxiv.org/pdf/1704.00028.pdf]

+0

Merci. J'essaierai Wasserstein GAN à la place. – Ezreal

+0

@Ezreal, avez-vous réussi à faire converger votre réseau? – Feras