【发布时间】:2021-03-15 05:44:22
【问题描述】:
我已经训练了一个 GAN 来重现类似 CIFAR10 的图像。最初我注意到生成器生成的一批图像看起来总是一样的,如下图所示:
经过数小时的调试和比较,该教程是一个很好的初学者学习资源 (https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small-object-photographs-from-scratch/),我只在我的原始代码上添加了一个字母并且生成的图像开始看起来正常(每个批次开始看起来彼此不同),如下图所示:
代码上神奇的一个字符更改是进行以下更改:
更改自:
def generate_latent_points(self, n_samples):
return np.random.rand(n_samples, self.latent_dim)
到:
def generate_latent_points(self, n_samples):
return np.random.randn(n_samples, self.latent_dim)
希望这个非常微妙的细节可以帮助那些花费数小时为 GAN 训练过程摸不着头脑的人。
np.random.rand 在[0, 1) 上提供均匀分布
np.random.randn 给出均值为 0 和方差为 1 的单变量“正态”(高斯)分布
那么为什么生成器的潜在种子分布差异会表现得如此不同?
【问题讨论】:
标签: python neural-network conv-neural-network generative-adversarial-network