Pytorch框架实现VAE(Variational Autoencoder)

变分自编码器是一种生成模型,通过编码器和解码器学习输入数据与隐藏变量之间的映射。编码器输出的均值和标准差用于在高斯分布中采样得到隐藏变量z,解码器则根据z生成近似输入的数据。ReparameterizationTrick解决了编码器和解码器在数据流上的断开问题,使得模型训练成为可能。文章还介绍了VAE的损失函数以及提供了Pytorch的代码实现示例。
部署运行你感兴趣的模型镜像

目录

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

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

(1)具体流程 

(2)注意具体细节

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

(1)编码器(Encoder)

(2)解码器(Decoder)

4.Reparameterization Trick

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

6.VAE代码实现 


自编码器原理及使用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的原理+直观理解+公式推导+去噪+异常检测

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值