使用 KL 散度时,变分自动编码器为每个输入 mnist 图像提供相同的输出图像

2024-04-13

当不使用 KL 散度项时,VAE 几乎完美地重建 mnist 图像,但在提供随机噪声时无法正确生成新图像。

当使用 KL 散度项时,VAE 在重建和生成图像时都会给出相同的奇怪输出。

这是损失函数的 pytorch 代码:

def loss_function(recon_x, x, mu, logvar):
    BCE = F.binary_cross_entropy(recon_x, x.view(-1, 784), size_average=True)
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())    
    return (BCE+KLD)

recon_x 是重建图像,x 是原始图像,mu 是均值向量,而 logvar 是包含方差对数的向量。

这里出了什么问题?提前致谢 :)


一个可能的原因是两个损失之间的数值不平衡,您的BCE损失计算为批次的平均值(参见size_average=True)而KLD一是总结。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 KL 散度时,变分自动编码器为每个输入 mnist 图像提供相同的输出图像 的相关文章

随机推荐