原文链接: TensorFlow 条件变分自编码(CVAE)
上一篇: TensorFlow 变分自编码(Variational Auto-Encoder)
下一篇: opencv 动漫头像截取
参考
http://www.cnblogs.com/zyly/p/9123443.html
一 条件变分自编码(CVAE)
变分自编码存在一个问题,虽然可以生成一个样0本,但是只能输出与输入图片相同类别的样0本。虽然也可以随机从符合模型生成的高斯分布中取数据来还原成样0本,但是这样的话饿哦们并不知道生成的样0本属于哪个类别。条件变分编码则可以解决这个问题,让网络按指定的类别生成样0本。
在变分自编码的基础上,再取理解条件编码自编码会很容易。主要的改动是,在训练测试时加入一个one-hot向量,用于表示标签向量。其实就是给编码自编码网络加入一个条件,让网络学习图片时加入标签因素,这样就可以按照指定的标签生成图片。
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
print(type(mnist)) # <class 'tensorflow.contrib.learn.python.learn.datasets.base.Datasets'>
print('Training data shape:', mnist.train.images.shape) # Training data shape: (55000, 784)
print('Test data shape:', mnist.test.images.shape) # Test data shape: (10000, 784)
print('Validation data shape:', mnist.validation.image