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