GAN的随机噪声

时间:2020-03-05 20:54:27

标签: machine-learning random deep-learning noise generative-adversarial-network

我是GAN的新手。我正在学习对GAN建模以生成图像,但是我并不太真正理解给生成器的随机噪声到底是什么。它是0到1之间的随机数吗?它的大小应该是多少?另外,每次发电机运行时,随机噪声是否应保持恒定?

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:2)

随机噪声是一个特征向量,对于每个图像来说都是唯一的

让我们考虑噪声矢量128

目前,仅关注向量的第一个条目 让我们考虑一下这是针对头发的长度

从训练图像模型得知,对于秃头,该值== 0,对于长发,该值== 1,通过从0到1中选择随机数,可以确定头发数量。 因此模型可以生成不同头发长度的人

通过这种方式,随机噪声中的所有128个条目将决定人脸的一个因素

这就是为什么每次选择随机噪声都会生成新的人像

如果每次都使用相同的随机噪声,则模型将生成相同的图像

希望您能理解GAN的工作原理。

答案 1 :(得分:2)

在github上有一个tutorial驱动的jupyter笔记本(完整披露,这是我的github)。 (可用的解决方案here

噪声或潜在的随机变量几乎可以生成,但是您喜欢例如以下示例:

# Generate latent random variable to feed to the generator, by drawing from a uniform distribution 
z = np.random.uniform(-1., 1., size=[batch_size, noise_dim])

但是,有必要考虑发生器输入层中的激活函数,并注意其敏感范围。

生成器将此输入作为种子,以从该潜在变量解码到源数据集域。因此显然,相同的随机变量将导致生成的样本完全相同。

因此,您应该在训练时不断绘制新样本,并且不要使噪声保持恒定。

答案 2 :(得分:0)

随机噪声矢量分布表示潜在空间。对于GAN而言并不重要,但对于自动编码器而言则更为重要。通常,噪声是从正态分布生成的,但是一些研究人员报告说使用球形分布可以改善训练效果(对不起,我没有方便的参考文献)。噪声范围取决于您的输入层。如果您使用的是图像,则可能在0和1之间或在-1和1之间对输入进行了归一化处理,因此将对噪声矢量使用相应的分布范围。可能会像这样生成一个典型的噪声矢量:

noise = tf.random.normal([BATCH_SIZE, noise_dim])

其中BATCH_SIZE是训练批次的大小(16、32、64、128 ...),noise_dim是噪声向量的大小,这取决于您的特征空间(对于中等分辨率的图像,我经常使用1024)

答案 3 :(得分:0)

我也是GAN的新手,但最近在GAN上从事信号生成工作。

随机噪声是发生器的输入。在开始时它没有任何意义,通过培训您会尝试找到对他们有意义的东西。关于大小,我仍然不确定我的结论是否正确,因此我希望其他人如果我错了也能纠正我的结论。我们应该为我们的问题寻找合适的尺寸。 如果潜在空间很小,则模型将达到无法再产生更好质量(瓶颈)的程度;如果太大,模型将需要很长时间才能产生良好结果,甚至可能无法收敛。通常一个开始于其他人用于相同问题的潜在空间大小。

答案 4 :(得分:0)

随机向量实际上并不是随机的,通常我们从某些特定分布(高斯、均匀等)中对向量进行采样。生成器获取采样向量,然后通过最小化采样向量的概率分布和所有训练数据的分布的 Jensen-Shannon 散度,尝试将其映射到训练数据的分布。 我们提供给生成器的采样向量的大小是一个超参数。

相关问题