PyTorch生成式人工智能(17)——變分自編碼器詳解與實現
- 0. 前言
- 1. 潛空間運算
- 2. 變分自編碼器
- 2.1 自編碼器與變分自編碼器對比
- 2.2 模型訓練流程
- 3. 構建變分自編碼器
- 3.1 模型構建
- 3.2 模型訓練
- 3.3 生成圖像
- 4. 向量運算
- 小結
- 系列鏈接
0. 前言
雖然自編碼器 (AutoEncoder, AE) 在重建輸入數據方面表現良好,但通常在生成訓練集中不存在的新樣本時表現不佳。更重要的是,自編碼器在輸入插值方面同樣表現不佳,無法生成兩個輸入數據點之間的中間表示。這就引出了變分自編碼器 (Variational Auto-Encoder
, VAE
)。
本節將從零開始構建和訓練一個 VAE
,用于生成人臉圖像,使用 eyeglasses
數據集訓練 VAE
。VAE
的編碼器將大小為 3 × 256 × 256 = 196,608
個像素的圖像壓縮成一個 100
維的概率向量,每個維度遵循正態分布,解碼器則根據這個概率向量重建圖像。訓練好的 VAE
不僅能夠復制訓練集中的人臉,還能夠生成新的面孔。
1. 潛空間運算
使用變分自編碼器 (Variational Auto-Encoder
, VAE
) 可以進行向量運算和輸入插值。操作不同輸入的編碼表示(潛向量),以在解碼時實現特定的結果(例如