变分自动编码器(Variational Autoencoder)
变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成。与一般的自动编码器最大的不同就是在编码过程给它增加一些限制,迫使其生成的隐含向量能够粗略的遵循一个标准正态分布。从而解决我们没有办法自己去构造隐藏向量,任意生成图片的缺点。
下面是训练VAE模型的代码:
x = Input(batch_shape=(batch_size, original_dim))
#全连接层h,nodes个数为intermediate_dim,激活函数为relu
h = Dense(intermediate_dim, activation='relu')(x)
#z_mean = 连接h的全链接层,nodes个数为latent_dim
z_mean = Dense(latent_dim)(h)
#z_log_sigma = 连接h的全链接层,nodes个数为latent_dim
z_log_sigma = Dense(latent_dim)(h)
#sample
def sampling(args):
z_mean, z_log_sigma = args
#生成随机正态分布epsilon
epsilon = K.random_normal(shape=