首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调整GAN超参数

调整GAN超参数
EN

Stack Overflow用户
提问于 2017-09-24 13:35:52
回答 1查看 4.3K关注 0票数 0

如上面两张图片所示,在训练DCGAN模型时,梯度不稳定和波动greatly.Because,因此模型不能绘制出完美的图像,甚至绘制出人类eyes.Does可以识别的图像。有谁能告诉我如何调整参数,如辍读率或学习率或其他参数,使模型运行得更好?我将非常感谢您!这是我之前制作的模型(用Keras构建):

鉴别器:

学习率为0.0005

丢失率为0.6

batch_size 25岁

代码语言:javascript
运行
复制
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))

生成器和GAN模型:

学习率为0.0001

动量为0.9

代码语言:javascript
运行
复制
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))
EN

回答 1

Stack Overflow用户

发布于 2017-09-24 21:32:50

稳定的GAN训练是一个开放的研究问题。不过,我可以给你两个建议。如果您坚持原始的GAN训练例程,并且对您正在做的事情没有绝对的了解,请使用DCGAN架构和他们的论文(https://arxiv.org/pdf/1511.06434.pdf%C3%AF%C2%BC%E2%80%B0)中描述的可用的超参数。GAN训练是高度不稳定的,使用其他超参数将导致模式崩溃或梯度消失。

使用GANs的更简单的方法是使用Wasserstein GAN。这些在任意架构下都是相当稳定的。然而,我强烈建议使用他们论文中建议的超参数,因为对我来说,对于不同的超参数,训练也会崩溃。改进的Wasserstein GAN:[https://arxiv.org/pdf/1704.00028.pdf]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46386948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档