生成对抗网络(GANs).ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DIG: Data Intelligence Generation Lab 山西大学计算机科学与信息技术学院 山西大学大数据科学与产业研究院 生成式对抗网络原理及其发展: Generative Adversarial Nets 2017年12月 知识工程 OUTLINE OUTLINE Generative Adversarial Nets(GANS) 有监督学习经常比无监督的能获得更好的训练效果。但真实世界中,有监督学习需要的数据标注(label)是相对少的。所以研究者们从未放弃去探索更好的无监督学习策略,希望能从海量的无标注数据中学到对于这个真实世界的表示甚至知识,从而去更好地理解我们的真实世界。 评价无监督学习好坏的方式有很多,其中生成任务就是最直接的一个。只有当我们能生成/创造我们的真实世界,才能说明我们是完完全全理解了它。然而,生成任务所依赖的生成式模型(generative models)往往会遇到两大困难。首先是我们需要大量的先验知识去对真实世界进行建模,其中包括选择什么样的先验、什么样的分布等等。而建模的好坏直接影响着我们的生成模型的表现。另一个困难是,真实世界的数据往往很复杂,我们要用来拟合模型的计算量往往非常庞大,甚至难以承受。 Generative Adversarial Nets(GANS) Ian Goodfellow提出的Generative Adversarial Networks(GANs)很好的避开了这两个困难。每一个 GAN 框架,都包含着一对模型 —— 一个生成模型(G)和一个判别模型(D)。因为 D 的存在,才使得 GAN 中的 G 不再需要对于真实数据的先验知识和复杂建模,也能学习去逼近真实数据,最终让其生成的数据达到以假乱真的地步 —— D 也无法分别。 论文中的模型优化公式: Generative Adversarial Nets(GANS) Generative Adversarial Nets(GANS) Generative Adversarial Nets(GANS) 代码说明及实验成果: # 定义判别器 def discriminator(x): # 计算D_h1=ReLU(x*D_W1+D_b1),该层的输入为含784个元素的向量 D_h1 = tf.nn.relu(tf.matmul(x, D_W1) + D_b1) # 计算第三层的输出结果。因为使用的是Sigmoid函数,则该输出结果是一个取值为[0,1]间的标量(见上述权重定义) # 即判别输入的图像到底是真(=1)还是假(=0) D_logit = tf.matmul(D_h1, D_W2) + D_b2 D_prob = tf.nn.sigmoid(D_logit) # 返回判别为真的概率和第三层的输入值,输出D_logit是为了将其输入tf.nn.sigmoid_cross_entropy_with_logits()以构建损失函数 return D_prob, D_logit Generative Adversarial Nets(GANS) #定义一个可以生成m*n阶随机矩阵的函数,该矩阵的元素服从均匀分布,随机生成的z就为生成器的输入 def sample_Z(m, n): return np.random.uniform(-1., 1., size=[m, n]) # 定义生成器 def generator(z): # 第一层先计算 y=z*G_W1+G-b1,然后投入激活函数计算G_h1=ReLU(y),G_h1 为第二次层神经网络的输出激活值 G_h1 = tf.nn.relu(tf.matmul(z, G_W1) + G_b1) # 以下两个语句计算第二层传播到第三层的激活结果,第三层的激活结果是含有784个元素的向量,该向量转化28×28就可以表示图像 G_log_prob = tf.matmul(G_h1, G_W2) + G_b2 G_prob = tf.nn.sigmoid(G_log_prob) return G_prob Generative Adversarial Nets(GANS) #分别输入真实图片和生成的图片,并投入判别器以判断真伪 D_real = discriminator(X) D_fake = discriminator(G_sample) #以下为原论文的判别器损失和生成器损失 D_loss = -tf.reduce_mean(tf.log(D_real) + tf.log(1. - D_fake)) G_l

文档评论(0)

_______ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档