Pytorch框架实现VAE(Variational Autoencoder)

目录

1.了解变分自编码器(VAE)

2.变分自编码器具体流程

(1)具体流程 

(2)注意具体细节

3.变分自编码器模型结构 

(1)编码器(Encoder)

(2)解码器(Decoder)

4.Reparameterization Trick

5.变分自编码器损失函数

6.VAE代码实现 

扫描二维码关注公众号,回复: 15474129 查看本文章

自编码器原理及使用Pytorch框架实现(AutoEncoder)

Pytorch实现自编码器变种

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 的过程

VAE的原理+直观理解+公式推导+去噪+异常检测

猜你喜欢

转载自blog.csdn.net/Keep_Trying_Go/article/details/130654962