VAE手写体识别项目实现(详细注释)从小项目通俗理解变分自编码器(Variational Autoencoder, VAE)tu

本文介绍了VAE相关代码项目,给出代码来源及帮助理解VAE概念的知乎文章。代码有详细中文注释,对新手友好。展示了MNIST手写体识别图片生成项目代码,还介绍了理解VAE的几个小trick,如正态分布随机数、潜在变量设置等,并展示图片演变过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目及代码来源:

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/variational_autoencoder.py

在看代码前可以简单理解vae的基本概念上,推荐一篇知乎文章:https://zhuanlan.zhihu.com/p/55557709

还有https://yuanxiaosc.github.io/2018/08/26/%E5%8F%98%E5%88%86%E8%87%AA%E7%BC%96%E7%A0%81%E5%99%A8/

尤其第二篇,我就是在第二篇中理解通透了VAE的具体流程,在理解过程中我发现了模型中的几个小trick,我在注释中详细标注出来了并加上了自己的理解。方便之前没接触过vae的同志们直接上手,从程序中理解。

中文注释均为我个人的理解,对vae新手非常友好,看了注释后应该会对vae有了更深刻的认识,如果代码注释中有问题或错误请大家指出。

以下为一个mnist手写体识别图片的生成项目代码,可直接运行,并且最后展示了多个均匀分布的z解压后生成的图片间的关系即变化流程。

# -*- coding: utf-8 -*-
from __future__ import division, print_function, absolute_import

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
import tensorflow as tf

# Import MNIST data
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("MNIST/", one_hot=True)

# Parameters
learning_rate = 0.001
num_steps = 3000 #迭代次数 30000
batch_size = 64
print(num_steps)
# Network Parameters
image_dim = 784 # MNIST images are 28x28 pixels
hidden_dim = 512
latent_dim = 2#潜在向量的维度

# A custom initialization (see Xavier Glorot init)
def glorot_init(shape):
    return tf.random_normal(shape=shape, stddev=1. / tf.sqrt(shape[0] / 2.))

#当我们在初始化网络的权重时,需要设置一个合理的随机值,避免出
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值