GAN的原理其实很简单,就是生成网络G, 和判别网络D的对抗过程, 生成网络努力使得生成的虚假物品更加真实,而判别网络努力分别出哪些是G生成的,哪些是真实的,在这样一个对抗的过程中两个网络的能力不断得到提升。最终达到一个相对平衡的结果:理想状态下, G学习到真实数据的分布,而D无法分别出真实数据和生成数据, 即D(真) = D(假) = 0.5.
这里插入几张模型生成的图片,从左到右分别是随机生成的图片,100轮之后的图片,2000轮之后的图片,8000轮之后的图片。 代码虽然有100多行,但注释大概占了一般左右。一起交流,一起进步!
import tensorflow as tf
from matplotlib import gridspec
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import os
import cv2
"""
定义各个超参数,包括输入图片的大小, 隐藏层大小, 学习率,batch_size, 迭代次数等
"""
# D 代表判别网络, 定义判别网络的参数
D_input_size = 784
D_H_layer1 = 200
D_output_