首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成具有随机像素图像的敌对网络

生成具有随机像素图像的敌对网络
EN

Stack Overflow用户
提问于 2017-10-27 11:32:28
回答 1查看 584关注 0票数 2

我试图使用CelebA上的生成对抗性网络(GANs)生成图像,将每个图像调整为.jpeg格式的64*64。我的网络定义是这样的

代码语言:javascript
复制
def my_discriminator(input_var= None):
    net = lasagne.layers.InputLayer(shape= (None, 3,64,64), input_var = input_var)
    net = lasagne.layers.Conv2DLayer(net, 64, filter_size= (6,6 ),stride = 2,pad=2,W = lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.LeakyRectify(0.2))#64*32*32
    net = lasagne.layers.Conv2DLayer(net, 128, filter_size= (6,6),stride = 2,pad=2,W = lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.LeakyRectify(0.2))#128*16*16
    net = lasagne.layers.Conv2DLayer(net, 256, filter_size= (6,6),stride = 2,pad=2,W = lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.LeakyRectify(0.2))#256*8*8
    net = lasagne.layers.Conv2DLayer(net, 512, filter_size= (6,6),stride = 2,pad=2,W = lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.LeakyRectify(0.2))#512*4*4
    net = lasagne.layers.DenseLayer(net, 2048, W= lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.LeakyRectify(0.2))
    net = lasagne.layers.DenseLayer(net, 1, nonlinearity = lasagne.nonlinearities.sigmoid)

def my_generator(input_var=None):
    gen_net = lasagne.layers.InputLayer(shape = (None, 100), input_var = input_var)
    gen_net = lasagne.layers.DenseLayer(gen_net, 2048, W= lasagne.init.HeUniform())
    gen_net = lasagne.layers.DenseLayer(gen_net, 512*4*4, W= lasagne.init.HeUniform())
    gen_net = lasagne.layers.ReshapeLayer(gen_net, shape = ([0],512,4,4))
    gen_net = lasagne.layers.Deconv2DLayer(gen_net, 256,filter_size= (6,6),stride = 2,crop=2, W= lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.rectify)
    gen_net = lasagne.layers.Deconv2DLayer(gen_net, 128,filter_size= (6,6),stride = 2,crop=2, W= lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.rectify)
    gen_net = lasagne.layers.Deconv2DLayer(gen_net, 64, filter_size= (6,6), stride=2,crop=2,W= lasagne.init.HeUniform(), nonlinearity= lasagne.nonlinearities.rectify)
    gen_net = lasagne.layers.Deconv2DLayer(gen_net, 3, filter_size= (6,6),stride = 2,crop=2, nonlinearity= lasagne.nonlinearities.tanh)

通过生成器生成的图像,我得到了一些随机着色的像素,以及它们中类似于“网格”的结构,如示例图像中所示:

我的问题是,造成这两个问题的原因是什么,我还使用了几乎相同的架构,在Cifar-10数据集上,用.png格式的32*32分辨率图像,在生成器和鉴别器中减少了一个卷积层,但生成的图像不是这样的。不确定图像格式是否是原因。如果有人能提供一些想法、方法或链接,任何解决这些问题的方法,我都会非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 09:39:03

造成这些问题的原因是:

  1. 随机像素.图像数据的归一化必须符合生成器最后一层的激活函数-1,1 -> tanh
  2. 生成图像中的“网格”--每幅图像的尺寸发生变化的方式。因此,应该使用“转置”功能而不是“重塑”来转换(64,64,3)->(3,64,64)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46974047

复制
相关文章

相似问题

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