9 只生成构建第一个GAN之编写判别器模型
系列进度
GAN 网络教程 · 第 9 / 21 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
GAN 的关键是生成器和判别器互相推动,学习时要同时看结构、训练和样本质量。阅读时可以按「判别器模型的结构 -> 判别器的网络结构 -> 判别器的损失函数 -> 训练准备」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「判别器模型的结构」,再查「判别器的网络结构」。
在上一篇中,我们已经成功地构建了第一个GAN的生成器模型。生成器的任务是从随机噪声中生成可以“伪装”成真实数据的样本,而在这一篇中,我们将专注于判别器模型的构建。判别器的作用是判断输入的数据是真实的样本还是由生成器产生的假样本。
判别器模型的结构
判别器可以被视为一个二分类器,它的输入是一个样本(可以是真实样本,也可以是生成样本),输出是一个概率值,表示输入样本为真实样本的可能性。我们通常会使用卷积神经网络(CNN)来构建判别器,特别是在处理图像数据时。
编写 GAN 判别器时,先看输入尺寸、卷积层设计、真假标签、损失函数和梯度反馈。
判别器的网络结构
在构建判别器模型时,可以考虑如下的结构:
- 输入层:接收形状为
(高度, 宽度, 通道数)的图像。 - 卷积层:一系列卷积层,用于提取特征。通常会跟随批归一化(Batch Normalization)和激活函数(通常使用Leaky ReLU)。
- 全连接层:在特征提取后,接入全连接层用于进行分类。
- 输出层:使用Sigmoid激活函数,输出一个0到1之间的值,表示样本为真实的概率。
以下是一个简单的判别器模型的示例(以Keras为例):
import tensorflow as tf
from tensorflow.keras import layers, models
def build_discriminator(img_shape):
model = models.Sequential()
# 第一卷积层
model.add(layers.Conv2D(64, kernel_size=3, strides=2, padding='same', input_shape=img_shape))
model.add(layers.LeakyReLU(alpha=0.2))
model.add(layers.Dropout(0.3))
# 第二卷积层
model.add(layers.Conv2D(128, kernel_size=3, strides=2, padding='same'))
model.add(layers.LeakyReLU(alpha=0.2))
model.add(layers.Dropout(0.3))
# 第三卷积层
model.add(layers.Conv2D(256, kernel_size=3, strides=2, padding='same'))
model.add(layers.LeakyReLU(alpha=0.2))
model.add(layers.Dropout(0.3))
# 第四卷积层
model.add(layers.Conv2D(512, kernel_size=3, strides=2, padding='same'))
model.add(layers.LeakyReLU(alpha=0.2))
model.add(layers.Dropout(0.3))
# 展平层
model.add(layers.Flatten())
model.add(layers.Dense(1, activation='sigmoid')) # 输出层
return model
# 定义图像形状
img_shape = (64, 64, 3)
discriminator = build_discriminator(img_shape)
discriminator.summary()
在这个示例中,我们定义了一个简单的判别器,输入图像的形状为(64, 64, 3),适合大部分小型图像数据集。我们使用了 LeakyReLU 激活函数来替代常规ReLU,以解决可能出现的“死神经元”问题。
判别器的损失函数
在GAN的训练过程中,判别器的损失函数通常采用二元交叉熵(Binary Cross-Entropy),其计算公式为:
学《只生成构建第一个GAN之编写判别器模型》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。
其中:
- 表示判别器对真实样本 的预测值。
- 表示生成器生成的样本。
- 是真实数据的分布, 是随机噪声的分布。
训练准备
在下一篇中,我们将讨论GAN的训练过程以及数据准备和预处理的内容。在这一过程中,我们需要确保判别器与生成器能够交替训练,以达到生成替代真实数据样本的目标。
练习《只生成构建第一个GAN之编写判别器模型》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
复习《只生成构建第一个GAN之编写判别器模型》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
总之,现在我们已经成功编写了判别器模型,为接下来的训练做好了准备。在下一篇中,我们将进一步探讨如何准备数据和进行有效的训练。希望这个判别器模型的示例能够让你对GAN的构建有更深入的理解!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
只生成构建第一个GAN之编写判别器模型适合谁读?
这是 GAN 网络教程 系列第 9 / 21 篇,适合正在学习GAN 网络教程,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇GAN 网络教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读