本文假设读者已经了解GAN及CNN的基本原理实现如不清楚可参考以下文章:
读取本地图片数据并创建一个生成器,作为后续模型数据源
# 一个batch包含图片数量 # 卷积转置输出通道数量我们利用随机的噪音输入来生成图片
# 对输入噪音图片进行线性变换 # 对数据进行归一化处理 加快收敛速度 # 卷积转置进行上采样DCGAN的生成器为卷积网络使用转置卷积进行上采样,去除pooling层利用batch normalization加快收敛速度。
DCGAN的判别器为卷积网络这里使用卷积操作对图像进行特征提取识别。
# 苼成器希望判别器判断出来的标签为1 # 判别器识别生成器图片loss # 判别器希望识别出来的标签为0 # 判别器识别真实图片loss # 判别器希望识别出来的标签為1 # 生成器与判别器作为两个网络需要分别优化 # 指定占用GPU比例 # tensorflow默认占用全部GPU显存 防止在机器显存被其他程序占用过多时可能在启动时报错
跑叻50个循环大概用了5个小时笔者GPU比较一般,就不继续训练了可以看到,到这里已经生成了不错的效果
具体代码可以在我的github上找到: