在机器学习中,我们往往希望将复杂的、抽象的目标具体化,这是我们需要处理复杂、具体、维度高的数据。例如,图像、文字、音频等等。尽管这些形式看起来比较复杂,但往往复杂的数据背后都隐含着许多信息。我们可以根据这一特点,将原始数据化简,用比较低的维度去表达,从而达到我们想要的目的。在机器学习中有很多去压缩数据抽取核心特征的技巧,可以将复杂高维度的数据简化。Variational auto-encoder是人们常用的一种方法,Variational auto-encoder在无监督学习领域有着举足轻重的作用。下面就简单的介绍Variational auto-encoder。
1.Variational auto-encoder经常用于数据集预处理 进行数据降维或者特征的提取 ,其结构主要有两个各个部分组成,分别是Ecoder和Dcoder。
2. VAE整体结构
!这里插入图片描述](https://img-blog.csdnimg.cn/20200221161255687.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU2MTc5NQ==,size_16,color_FFFFFF,t_70)
2.1Ecoder过程
2.2Dcoder过程
2.3Reparameterization-参数化
2.4compute kl divergence-计算散度
2.5下面以fashion_mnist数据集为例进行训练
import os
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import Sequential, layers
from PIL import Image
from matplotlib import pyplot as plt
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
tf.random.set_seed(22)
np.random.seed(22)
os.environ['TF_CCP_MIN_LOG_LEVEL'] = '2'
assert tf.__version__.startswith('2.')
#save_images-保存图片
def save_images(imgs,name):
new_im = Image.new('L',