程序代码:
https://download.csdn.net/download/do_it_123/88935851
DCGAN网络框架:
这里使用的是一组二次元动漫头像的数据集, 共 51223 张图片,无标注信息,图片主体已裁剪、 对齐并统一缩放到96 × 96大小,部分图片如下:
生成器
生成网络 G 由 5 个转置卷积层单元堆叠而成,实现特征图高宽的层层放大,特征图通道数的层层减少。 首先将长度为 100 的隐藏向量通过 Reshape 操作调整为[b,1,1,100]的 4维张量,并依序通过转置卷积层,放大高宽维度,减少通道数维度,最后得到高宽为 64,通道数为 3 的彩色图片。每个卷积层中间插入 BN 层来提高训练稳定性,卷积层选择不使用偏置向量。
判别器
判别网络 D 与普通的分类网络相同,接受大小为[b,64,64,3]的图片张量,连续通过 5个卷积层实现特征的层层提取,卷积层最终输出大小为[b,2,2,1024],再通过池化层GlobalAveragePooling2D 将特征大小转换为[b,1024],最后通过一个全连接层获得二分类任务的概率。
训练与可视化
判别网络 判别网络的训练目标是最大化L函数,使得真实样本预测为真的概率接近于 1,生成样本预测为真的概率接近于 0。我们将判断器的误差函数实现在 d_loss_fn 函数中, 将所有真实样本标注为 1, 所有生成样本标注为 0,并通过最小化对应的交叉熵损失函数来实现最大化L函数。 生成网络 生成网络的训练目标是最小化L函数,使得生成样本预测为真的概率接近于 1。
网络训练 在每个 Epoch, 首先从先验分布中随机采样隐藏向量,从真实数据集中随机采样真实图片,通过生成器和判别器计算判别器网络的损失,并优化判别器网络参数。 在训练生成器时,需要借助于判别器来计算误差,但是只计算生成器的梯度信息并更新。这里设定判别器训练次k=5后,生成器训练一次。
备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
创作不易,相关程序,说明文档需求,如需要,可加作者新联系方式,WX:Q3101759565,QQ:3101759565[多加几次!!!]
祝您学业有成!工作顺利! 年薪百万!