热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tensorflow的GAN实现讲解

AI.Learning.CodeNotes对现成的代码进行注释理解。复制自我的github项目:https:github.comB-C-WANGAI.Learningtre

AI.Learning.CodeNotes

对现成的代码进行注释理解。
复制自我的github项目:https://github.com/B-C-WANG/AI.Learning/tree/master/AI.Learning.Notes.I

dcgan_mnist.py

from https://github.com/roatienza/Deep-Learning-Experiments/blob/master/Experiments/Tensorflow/GAN/dcgan_mnist.py

discriminator, self.D: 鉴别器

  • input: 28 x 28 x 1, depth = 1
  • output: 10 x 10 x 1, depth = 64
  • structure:
layer output_shape
input (None, 28, 28, 1)
conv2d (None, 14, 14, 64)
dropout -
conv2d (None, 7, 7, 128)
dropout -
cond2d (None, 4, 4, 256)
dropout -
conv2d (None, 4, 4, 512)
dropout -
flatten (None, 8192)
dense (None, 1)
activation -

generator, self.G: 生成器

  • input: 100
  • output: 28 x 28 x 1
  • structure:
layer output_shape
input (None,100)
dense (None, 12544)
batch_normallization -
activation -
reshape (None, 7, 7, 256)
dropout -
upSampling (None, 14, 14, 256)
deconv2d (None, 14, 14, 128)
batch_normalization -
activation -
upSampling (None, 28, 28, 128)
deconv2d (None, 28, 28, 64)
batch_normalization -
activation -
deconv2d (None, 28, 28, 32)
batch_normalization -
activation -
deconv2d (None, 28, 28, 1)
activation -

discriminator_model, self.DM, 鉴别模型

  • based on self.D
  • optimizer: RMSprop
  • loss: binary_crossentropy

adversarial_model, self.AM 对抗模型:

  • based on self.G and self.D
  • optimizer: RMSprop
  • loss: binary_crossentropy

鉴别

  1. 随机获取batch_size大小原始MNIST的image_train数据,shape=[batch_size, 100]
  2. 获取batch_size大小的噪声数据(随机数范围-1.0~1.0),shape=[batch_size, 100]
  3. 用生成模型将噪声数据转变为image数据,得到image_fake
  4. 组合噪声和原始数据,各占一半
  5. 生成label数据,前一半全为1(对应原始minst数据),后一半全为0(对应噪声生成的假数据)。
  6. 用DM进行训练(即训练权重,使其能够将原始和生成的假数据分开,这是鉴别模型

对抗

  1. 生成全1的label数据(对应原始真实图片)
  2. 生成噪声数据[batch_size, 100]
  3. 用AM模型训练,先用noise生成假图片数据,然后再鉴别,调整权重(此时生成和鉴别模型的权重是统一训练的,选用一个优化器),使鉴别器最终能够得到1。
  4. 注意这里的鉴别器和上面的鉴别器是一样的,或权重相同的,如果不同,则模型独立开来,达不到对抗的目的,由于上面的鉴别器致力于训练权重分开真假数据,而下面的鉴别器又致力于训练权重使随机数据能够得到和真实数据相同的标签(标签1),因而相互对抗,互相增强。最终使生成的数据能够接近真实数据

可视化

灌入随机数据到生成模型中,生成最终的图片

总结思路

将真实图像数据和随机数经过生成器生成的虚假数据选用不同标签训练鉴别器。
将生成器和鉴别器连在一起,训练使其将随机数生成的虚假图像数据能够辨别为1.

遇到的问题

  1. 为什么要将生成器和鉴别器分开,直接训练生成器使其能够生成鉴别器认为是1的图片不就行了,这样训练可能也会使鉴别器中的权重受影响————直接生成虚假图片后很难看出其真实性,所以需要加上鉴别器鉴别,才能计算误差梯度传播,可能只改变生成器的权重要更好一些。
  2. 生成器的意义————它实际上就是一个生成图片数据的算法,你可以用其他生成的数据算法代替,但是神经网络在此是很好用的,它需要一个100维度的随机数数据,然后用权重将其转化为虚假图片数据,这里面的权重(也包括偏差),就是重要的信息。你之后生成图片就只需要给100个随机数就可以了。(更高级的算法可以给语义,然后生成图片)

EOF:)


推荐阅读
  • 深度强化学习Policy Gradient基本实现
    全文共2543个字,2张图,预计阅读时间15分钟。基于值的强化学习算法的基本思想是根据当前的状态,计算采取每个动作的价值,然 ... [详细]
  • 文章目录1.解释一下GBDT算法的过程1.1Boosting思想1.2GBDT原来是这么回事2.梯度提升和梯度下降的区别和联系是什么?3.GBDT的优点和局限性有哪 ... [详细]
  • 文本生成图像简要回顾 text to image synthesis
    摘要       文本生成图像作为近几年的热门研究领域,其解决的问题是从一句描述性文本生成与之对应的图片。近一周来,我通过阅读了近几年发表于顶会的近10篇论文,做出本文中对该方向的 ... [详细]
  • NLP | 一文完全搞懂序列标注算法
    序列标注模型用到了长短期记忆网络(LSTM),条件随机场(CRF),Highway网络,本文循序渐进的介绍了序列标注算法,Bepatience!跟 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • ROC曲线原理及Python实现
    受试者工作特征曲线(receiveroperatingcharacteristiccurve,简称ROC曲线),是比较两个分类模型好坏的可视化工具ROC曲线的作用:1.较容易地查出 ... [详细]
  • 最近学习了数据挖掘常用的两种算法:FP-Growth和K-Means。现在把我的学习结果分享给大家。以下是本文的目录,大家可以根据需要跳过一些章节:1.FP-Grow ... [详细]
  • Proof (of knowledge) of exponentiation
    1.ProofofexponentiationProofofexponentiation是基于adaptiverootassumption(充分必要条件࿰ ... [详细]
  • DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
    导读深度神经网络(DNN)通过端到端的深度学习策略在许多具有挑战性的任务上达到了人类水平的性能。深度学习产生了具有多层抽象层次的数据表示;然而,它没有明确地提供任何关 ... [详细]
  • One Stage目标检测
    在计算机视觉中,目标检测是一个难题。在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析。如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框 ... [详细]
  • ForesightNews整理了ETHDenver2023日程及其周边活动供读者参考。 整理: ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Go 中的 init 函数 ... [详细]
author-avatar
木木的亦尘_283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有