1、关于噪声z的维度大小和Generator输出样本个数的关系
在论文《Effective data generation for imbalanced learning using Conditional Generative Adversarial Networks》 中提到,噪声z的维度dz,以及G和D内部隐藏层的数量是超参数
GAN源代码是这样定义z的:
# 噪声z是一个随机变量,服从[0,1]的正态分布,维度为(图像的高度*隐层的维度)
z = Variable(Tensor(np.random.normal(0, 1, (imgs.shape[0], opt.latent_dim))))
其中,imgs.shape[0]经过验证为128,也就是batch_size的大小,而latent_dim是隐层的维度,在前面设置了默认值为100
numpy.random.normal(loc=0.0, scale=1.0, size=None)
其中参数loc为分布的均值,scale为分布的标准差
size为整数或者整数组成的元组,表示输出值的维度。如果给定的维度为(m, n, k)
,那么就从分布中抽取m * n * k
个样本。如果size为None(默认值)并且loc
和scale
均为标量,那么就会返回一个值。否则会返回np.broadcast(loc, scale).size
个值
在本例中,从服从[0,1]分布的随机数据中抽取了128*100=12800个样本作为噪声z,也就是说z只是一个数,不是向量,一共输入了12800个z
输出时的代码为:
batches_done = epoch * len(dataloader) + i
if batches_done % opt.sample_interval == 0: