用各种GAN生成正态分布

用GAN生成正态分布

    毕设中有一部分与GAN(Generative Adversarial Networks)相关,但是一直不work,因此准备重新从最简单的GAN入手,实现一下试试看能不能发现什么问题。
    本文会用GAN从标准正态噪声生成均值为3.5,标准差为0.7的正态分布 N ( 3.5 , 0. 7 2 ) N(3.5, 0.7^2) N(3.5,0.72)


整体结构

    一个GAN由生成器Generator(G)和判别器Discriminator(D)构成,D希望能正确分辨真实样本和G生成的假样本,G希望能骗过D,让D认为G生成的样本是真的。根据GAN的不同,G和D的目标函数有所不同,结构和连接方式也各有不同,G与D内部的结构也比较自由(姑且这么认为,实际上还是需要小心设计的)。
    下图是一个原始GAN的结构。 z z z是一个 d d d维的噪声向量, x x x是从目标分布 N ( 3 , 0. 5 2 ) N(3, 0.5^2) N(3,0.52) 中采样得到的样本,即真实样本,也是一个 d d d维向量。


生成器与判别器

    由于任务比较简单,只是随机向量到随机向量,所以G和D的结构只使用MLP。方便起见,令随机向量维度 d = 10 d=10 d=10

# 生成器
class Generator_MLP(BasicBlock):
    def __init__(self, name=None):
        super(Generator_MLP, self).__init__(None, name or "Generator_MLP")
    def __call__(self, z, is_training=True, reuse=False):
        with tf.variable_scope(self.name, reuse=reuse):
            net = tf.nn.softplus(dense(z, 64, name='g_fc1'))
            out = dense(net, 10, name='g_fc2')
            return out
# 判别器
class Discriminator_MLP(BasicBlock):
    def __init__(self, name=None):
        super(Discriminator_MLP, self).__init__(None, name or "Discriminator_MLP")
    def __call__
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值