实例83:使用标签指导变分自编码网络生成MNIST数据

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

在编码阶段需要在输入端添加标签对应的特征,在解码阶段同样也需要将标签加入输入,这样,再解码的结果向原始的输入样本不断逼近,最终得到的模型将会把输入的标签特征当成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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值