gpt4 book ai didi

machine-learning - 生成对抗网络生成具有一些随机像素的图像

转载 作者:行者123 更新时间:2023-11-30 09:19:00 25 4
gpt4 key购买 nike

我正在尝试在 CelebA 对齐数据集上使用生成对抗网络(GAN)生成图像,每个图像大小调整为 64*64,采用 .jpeg 格式。我的网络定义是这样的GANs architecture

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)

通过生成器生成的图像,我得到了一些随机颜色的像素以及其中的“网格”状结构,如示例图像中所示: enter image description here

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

最佳答案

这些问题的原因是:-

  1. 随机像素-图像数据的归一化必须符合Generator最后一层的激活函数[-1,1] -> tanh

  2. 生成图像中的“网格”- 每个图像尺寸的更改方式。所以应该使用'transpose'函数而不是'reshape'来转换(64,64,3)->(3,64,64)

关于machine-learning - 生成对抗网络生成具有一些随机像素的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com