未验证 提交 dfb8189d 编写于 作者: B Brother Pony 提交者: GitHub

Update 13.md

发电机 修改为 生成器
上级 244aed97
......@@ -190,7 +190,7 @@ def weights_init(m):
```
### 发电机
### 生成器
生成器![](img/bcbf81e7b0b04afeac884e8ae8b39b49.jpg)旨在将潜在空间矢量(![](img/d132b400654f0a1c0bf2cf921b391c8a.jpg))映射到数据空间。 由于我们的数据是图像,因此将![](img/d132b400654f0a1c0bf2cf921b391c8a.jpg)转换为数据空间意味着最终创建与训练图像大小相同的 RGB 图像(即 3x64x64)。 在实践中,这是通过一系列跨步的二维卷积转置层来完成的,每个层都与 2d 批处理规范层和 relu 激活配对。 生成器的输出通过 tanh 函数进行馈送,以使其返回到![](img/3a4258d8646a4d13394b3b76e8f40cd4.jpg)的输入数据范围。 值得注意的是,在卷积转置层之后存在批处理规范函数,因为这是 DCGAN 论文的关键贡献。 这些层有助于训练过程中的梯度流动。 DCGAN 纸生成的图像如下所示。
......@@ -391,14 +391,14 @@ optimizerG = optim.Adam(netG.parameters(), lr=lr, betas=(beta1, 0.999))
回想一下,训练鉴别器的目的是最大程度地提高将给定输入正确分类为真实或伪造的可能性。 关于古德费罗,我们希望“通过提高随机梯度来更新鉴别器”。 实际上,我们要最大化![](img/e977e22f15c638b1eb38173f0ac10253.jpg)。 由于 ganhacks 提出了单独的小批量建议,因此我们将分两步进行计算。 首先,我们将从训练集中构造一批真实样本,向前通过![](img/683792a4ccec414f11d2a19bc4258015.jpg),计算损失(![](img/288340ac495ebb94532e377405b41729.jpg)),然后在向后通过中计算梯度。 其次,我们将使用电流发生器构造一批假样本,将这批样本通过![](img/683792a4ccec414f11d2a19bc4258015.jpg)正向传递,计算损失(![](img/10648c8a69de50dc6c5b758a316f669e.jpg)),然后_向后传递累积_梯度。 现在,利用从所有真实批次和所有伪批次累积的渐变,我们将其称为“鉴别器”优化器的一个步骤。
**第 2 部分-训练发电机**
**第 2 部分-训练生成器**
如原始论文所述,我们希望通过最小化![](img/10648c8a69de50dc6c5b758a316f669e.jpg)来训练 Generator,以产生更好的假货。 如前所述,Goodfellow 指出这不能提供足够的梯度,尤其是在学习过程的早期。 作为解决方法,我们改为希望最大化![](img/940444bcfffe781f4d3318e458328842.jpg)。 在代码中,我们通过以下步骤来实现此目的:将第 1 部分的 Generator 输出与 Discriminator 进行分类,使用实数标签 GT 计算 G 的损耗_,反向计算 G 的梯度,最后使用优化器更新 G 的参数 步。 将真实标签用作损失函数的 GT 标签似乎违反直觉,但这使我们可以使用 BCELoss 的![](img/2632ebd23b7ece7c8b70b4801fdcc6cd.jpg)部分(而不是![](img/d0a7cba3395a4033bcc9c486b5097166.jpg)部分),这正是我们想要的。_
最后,我们将进行一些统计报告,并在每个时期结束时,将我们的 fixed_noise 批次推入生成器,以直观地跟踪 G 的训练进度。 报告的训练统计数据是:
* **Loss_D** -鉴别器损失,计算为所有真实批次和所有假批次的损失总和(![](img/b8844187a0c07427a987bb6524d6ddcf.jpg))。
* **Loss_G** -发电机损耗计算为![](img/940444bcfffe781f4d3318e458328842.jpg)
* **Loss_G** -生成器损耗计算为![](img/940444bcfffe781f4d3318e458328842.jpg)
* **D(x)**-所有真实批次的鉴别器的平均输出(整个批次)。 这应该从接近 1 开始,然后在 G 变得更好时理论上收敛到 0.5。 想想这是为什么。
* **D(G(z))**-所有假批次的平均鉴别器输出。 第一个数字在 D 更新之前,第二个数字在 D 更新之后。 这些数字应从 0 开始,并随着 G 的提高收敛到 0.5。 想想这是为什么。
......@@ -734,4 +734,4 @@ plt.show()
[`Download Python source code: dcgan_faces_tutorial.py`](../_downloads/dc0e6f475c6735eb8d233374f8f462eb/dcgan_faces_tutorial.py) [`Download Jupyter notebook: dcgan_faces_tutorial.ipynb`](../_downloads/e9c8374ecc202120dc94db26bf08a00f/dcgan_faces_tutorial.ipynb)
[由狮身人面像画廊](https://sphinx-gallery.readthedocs.io)生成的画廊
\ No newline at end of file
[由狮身人面像画廊](https://sphinx-gallery.readthedocs.io)生成的画廊
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册