在编码阶段需要在输入端添加标签对应的特征,在解码阶段同样也需要将标签加入输入,这样,再解码的结果向原始的输入样本不断逼近,最终得到的模型将会把输入的标签特征当成MNIST数据的一部分,从而实现通过标签生成MNIST数据。
在输入端添加标签时,一般是通过一个全连接层的变换将得到的结果使用contact函数连接到原始输入的地方,在解码阶段也将标签作为样本数据,与高斯分布的随机值一并运算,生成模拟样本。
实例描述
使用条件变分自编码模型,通过指定标签输入生成对应类型的MNIST模拟数据
1.添加标签占位符
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_labels])
2.添加输入全连接权重
添加全连接层的权重‘wlabl’和‘blabl’,作为输入标签和特征转换。这里也需要将输入的标签也转换成256个维度的输出。因为最终也需要连接到原始的图片全连接输出中,所以到第二层全连接时,输入需要编程256×2,因此也需要将mean_w1和log_sigma_w1的输入修改成n_hidden_1×2.
weights = {
'w1': tf.Variable(tf.truncated_normal([n_input, n_hidden_1],
stddev=0.001)),
'b1': tf.Variable(tf.zeros([n_hidden_1])),
'wlab1': tf.Variable(tf.truncated_normal([n_labels, n_hidden_1],
stddev=0.001)),
'blab1': tf.Variable(tf.zeros([n_hidden_1])),
'mean_w1': tf.Variable(tf.truncated_normal([n_hidden_1*2, n_hidden_2],
stddev=0.001)),
'log_sigma_w1': tf.Variable(tf.truncated_normal([n_hidden_1*2, n_hidden_2],
stddev=0.001)),
'w2': tf

本文介绍了如何使用条件变分自编码器(CVAE)结合MNIST数据集,通过指定标签来生成对应类型的模拟手写数字图像。在编码阶段,标签被转换为特征并添加到输入;解码阶段则将标签与随机噪声结合,生成新的图像。经过训练,模型能够学习数据分布,并创造出与标签相符的新图像。
最低0.47元/天 解锁文章
27

被折叠的 条评论
为什么被折叠?



