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
) 可以进行向量运算和输入插值。操作不同输入的编码表示(潜向量),以在解码时实现特定的结果(例如