CVAE(条件变分自动编码器)简单理解


简介

之前的文章介绍了AE和VAE,指出了它们的优缺点。AE适合数据压缩与还原,不适合生成未见过的数据。VAE适合生成未见过的数据,但不能控制生成内容。本文所介绍的CVAE(Conditional VAE)可以在生成数据时通过指定其标签来生成想生成的数据。CVAE的结构图如下所示:

整体结构和VAE差不多,区别是在将数据输入Encoder时把数据内容与其标签(label)合并(cat)一起输入,将编码(Z)输入Decoder时把编码内容与数据标签(label)合并(cat)一起输入。注意label并不参与Loss计算,CVAE的Loss和VAE的Loss计算方式相同(input和output的MSE Loss以及\(\mathcal{N}\left(\mu_{}, \sigma_{}^2\right)\)\(\mathcal{N}\left(0, 1\right)\)的KL Loss)

因此我们在生成数据时,可以先从正态分布采样,然后cat上你想生成的数据的label,一起送入Decoder,就能生成和label类似的数据。

代码

有关CVAE的代码实现:Github

实验结果:

从正态分布采样100个latent并选择期望生成的图片的标签,把它们cat以后一起输入训练好的Decoder

标签为1时:

标签为9时:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM