NetGANOperator
NetGANOperator[{generator,discriminator}]
表示一个网络,用生成网络 generator 和分类网络 discriminator 来执行 generative adversarial network (GAN) 训练.
NetGANOperator[{generator,discriminator},loss]
指定使用的损失函数类型.
更多信息和选项
- NetGANOperator 可用于训练各种类型数据的生成模型.
- 在训练 NetGANOperator[…] 过程中,生成器和判别器进行零和游戏竞赛. 生成器试图欺骗判别器,判别器试图区分真实数据与生成数据.
- 在 NetGANOperator[{generator,discriminator},…] 中,generator 和 discriminator 应接受一个输入,生成一个输出. 另外,generator 应生成与 discriminator 的输入兼容的输出,即应输出一个标量.
- NetGANOperator[…] 的输入端口为:
-
"Sample" 真实样本,判别器应给出高分 "Latent" 输入生成器的种子,以生成假样本 - 输出端口为:
-
"LossReal" 判别器在真实样本上的损失 "LossFake" 判别器在假样本上的损失 "GeneratedFake" 生成的假样本 - NetGANOperator 实现以下结构:
- 在 NetGANOperator[…] 的训练过程中,NetTrain 自动最小化判别器的损失 "LossReal" 与 "LossFake" 的和. 从判别器到生成器的梯度被反转,因此 NetTrain 使生成器的 "LossFake" 最大化.
- 通常情况下,TrainingUpdateSchedule 被用在 NetTrain 中,以避免同时对判别器和生成器进行更新. TrainingUpdateSchedule 还可使对判别器的更新比生成器的更新更频繁.
- 在 NetGANOperator[…,loss] 中,loss 的可能的值包括:
-
Automatic 根据判别器的输出层自动计算损失 "JensenShannon" Jensen-Shannon 散度 "Wasserstein" 在 Wasserstein-GAN 中使用的 Earth Mover 距离的近似 - 当设为 "JensenShannon" 时,由下式给出损失:
-
"LossReal" -Log[discriminator[sample]] "LossFake" -Log[1-discriminator[generator[latent]] - 当设为 "Wasserstein" 时,由下式给出损失:
-
"LossReal" -discriminator[sample] "LossFake" discriminator[generator[latent]] - 可包含以下训练参数:
-
LearningRateMultipliers Automatic 网络中可训练数组的学习率乘子 - Options[NetGANOperator] 给出构建运算器的默认选项的列表. Options[NetGANOperator[…]] 给出在一些数据上运行运算器的默认选项列表.
- Information[NetGANOperator[…]] 给出关于运算器的报告.
- Information[NetGANOperator[…],prop] 给出 NetGANOperator[…] 的属性 prop 的值. 可能的属性与 NetGraph 相同.
范例
打开所有单元关闭所有单元基本范例 (1)
应用 (4)
一维分布的样本 (1)
创建一个 NetGANOperator,嵌入生成器和判别器,以对抗的方式训练它们:
为了监测 NetGANOperator 的训练,编写一个函数,来查看生成的样本:
查看 NetGANOperator 的随机初始化:
二维分布的样本 (1)
生成数字的图像 (1)
在随机初始化的 NetGANOperator 上试用该函数:
训练 NetGANOperator 生成图像,并查看训练过程中生成的图像:
从训练过的 NetGANOperator 中提取生成器,并用它来生成新的数字图像:
用 Cycle-GAN 将数字转换成另一个数字 (1)
定义 Cycle-GAN 结构,使用两个 NetGANOperator 和共享的生成器,将循环一致性损失添加到对抗性损失中:
属性和关系 (1)
考虑有几个生成器和判别器,以及相应的 NetGANOperator:
NetGANOperator 中的生成器从判别器接收反梯度:
如果单独训练 NetGANOperator,在生成器之前或之后没有网络层,这等效于使用负的学习率乘子:
训练 NetGANOperator 相当于训练下面的 NetGraph:
它还等价于下面的 NetGraph,其中有两处共享判别器:
文本
Wolfram Research (2020),NetGANOperator,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetGANOperator.html.
CMS
Wolfram 语言. 2020. "NetGANOperator." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/NetGANOperator.html.
APA
Wolfram 语言. (2020). NetGANOperator. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NetGANOperator.html 年