目录
扫描二维码关注公众号,回复:
15474129 查看本文章
自编码器原理及使用Pytorch框架实现(AutoEncoder)
1.了解变分自编码器(VAE)
基本的编码器本质上是学习输入的x和隐藏变量z之间映射关系,是一个判别模型(Discriminator Model),并不是一个生成模型(Generator Model)。关于自编码器的基本原理请读者阅读上述链接中的内容。
- 给定一个隐藏变量的分布p(z),如果可以学习到条件概率分布p(x | z),则通过联合概率分布p(x,z) = p(x | z),p(z)进行采样学习,生成不同的样本。
- 变分自编码器可以达到上面给定的要求
-
变分自编码同样具有编码器和解码器。编码器接收输入的x,输出隐藏变量z,解码器接收隐藏变量z,输出近似x的变量x'。
-
VAE模型对隐藏变量z的分布有显式约束,希望隐藏变量z符合预先设定的先验分布p(z)。
2.变分自编码器具体流程
(1)具体流程
- 变分自编码器的编码器(Encoder)和解码器(Decoder)在数据流上并不是相连的,不会直接将编码器输出的结果传递到解码器的输入上。
(2)注意具体细节
3.变分自编码器模型结构
(1)编码器(Encoder)
假设设置的batchSize = b,并且每个样本生成一个均值和一个标准差,编码器的过程如下图所示。
(2)解码器(Decoder)
编码器输出的均值和标准差服从高斯分布,解码器从对应的高斯分布中随机抽样z作为输入。
4.Reparameterization Trick
提示:变分自编码器的编码器(Encoder)和解码器(Decoder)在数据流上并不是相连的,不会直接将编码器输出的结果传递到解码器的输入上。为了解决这个问题,提出了一种连续可到的解决方案,称之为Reparameterization Trick。
Reparameterization Trick解决方案如下:
5.变分自编码器损失函数
6.VAE代码实现
Github代码实现: GitHub - KeepTryingTo/Pytorch-GAN: 使用Pytorch实现GAN 的过程