昇思Mindspore25天学习打卡Day20:DCGAN生成漫画头像-4 构造网络

时间:2024-07-09 16:31:16

当处理完数据后,就可以来进行网络的搭建了。按照DCGAN论文中的描述,所有模型权重均应从 mean为0,sigma为0.02的正态分布中随机初始化。

4.1 生成器

生成器 G的功能是将隐向量z 映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的 RG8 图像。在实践场景中,该功能是通过一系列
Conv2dTranspose 转置卷积层来完成的,每个层都与 BatchNorm2d 层和 ReLu 激活层配对,输出数据会经过 tanh 函数,使其返回[-1,1]的数据范围内。

DCGAN论文生成图像如下所示:

在这里插入图片描述

  • 图片来源: Liuk:Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks
    我们通过输入部分中设置的 nz、ngf 和 nc 来影响代码中的生成器结构。 nz 是隐向量 z的长度,
    ngf 与通过生成器传播的特征图的大小有关,nc 是输出图像中的通道数。
    以下是生成器的代码实现:
    在这里插入图片描述

4.2 判别器

如前所述,判别器D是一个二分类网络模型,输出判定该图像为真实图的概率。通过一系列的 conv2d、
BatchNorm2d 和 LeakyReLu 层对其进行处理,最后通过 Sigmoid 激活函数得到最终概率。
DCGAN论文提到,使用卷积而不是通过池化来进行下采样是一个好方法,因为它可以让网络学习自己的池化特征。
判别器的代码实现如下:
在这里插入图片描述