生成对抗网络GAN---first demo

GAN概念介绍

GAN的全称是Generative adversarial network,中文翻译过来就是对抗式神经网络。对抗神经网络其实是两个网络的组合,可以理解为一个网络生成模拟数据(生成网络Generator),另一个网络判断生成的数据是真实的还是模拟的(判别网络Discriminator)。生成网络要不断优化自己生成的数据让判别网络判断不出来,判别网络也要优化自己让自己判断得更准确。二者关系形成对抗,因此叫对抗神经网络。

也就是主要是由两部分的网络组成,生成网络Generator判别网络Discriminator,先用噪声生成数据,输入到生成网络中,造出假的数据,将生成假的数据输入的判别网络中,进行判别数据的真假性;

生成网络的损失函数:
在这里插入图片描述
该式子中的G代表生成网络,D代表判别网络,H代表交叉熵,z数输入的随机数据,D(G(z))是对假数据的判断概率,1代表数据绝对真实吗,0代表数据的绝对虚假。H(1,D(G(z))),代表判别结果与1的距离。
判别网络的损失函数:
在这里插入图片描述
上式中,x代表真实数据,H(1,D(x))代表真实数据与1的距离,H(0,D(G(z)))代表生成数据与0的距离。因此想要识别网络的效果足够好,就需要真实数据尽可能预测为1,生成数据尽可能预测为0,

参考链接:

https://blog.csdn.net/LEEANG121/article/details/104113406
https://www.zhihu.com/question/63493495/answer/212218657

代码参考

主要参考博文:
链接1: 生成对抗网络GAN—生成mnist手写数字图像示例(附代码).

链接2: 基于GAN的mnist训练集图片生成神经网络实现.
代码在改文章末端的github里有完整版。
在这里插入图片描述
在箭头的目录下,有四个文件,主要内容都在mnist_model.py这个文件里,将代码取出到自己文件里,剩下两个就是调用该model的训练和测试代码接口。

训练遇到mnist数据集加载不了的问题。

问题一:h5py is running against HDF5 1.10.6 when it was built against 1.10.5问题
主要是h5py要求1.10.5,但现在的环境是1.10.6,因此需要重新更新h5py的版本,
解决办法:我的环境是anaconda里加入的python环境,我是进入到环境里,然后卸载h5py,然后再安装h5py,代码如下:

pip uninstall h5py
pip install h5py
或者
conda install hdf5=1.10.x

问题二:mnist数据集无法加载
(即:from tensorflow.examples.tutorials.mnist import input_data无法导入)
解决办法:
手动下载到对应目录下,对应方法,在该参考链接问题二:解决办法,下载代码的链接在该博客里mnist数据集

问题三:主要是tf2和tf1.x不兼容的小问题
解决办法:AttributeError: module tensorflowhas no attribute placeholder

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

替换:

import tensorflow as tf

参考:https://blog.csdn.net/zhuiyuanzhongjia/article/details/106821333

问题四:在pycharm中train后,继续进行test时,会出现ValueError: Variable generator/dense/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:如下图:
在这里插入图片描述
解决办法:
当训练时候构建了graph后,在测试时,需要清楚运算图,在构建graph。将代码加在测试代码开始:

tf.reset_default_graph()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值