提交 d7d0001a 编写于 作者: W wizardforcel

2021-01-19 11:23:46

上级 9c69ccc0
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_tensor/polynomial_numpy.html#sphx-glr-beginner-examples-tensor-polynomial-numpy-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现使用 numpy 手动计算正向传播,损耗和后向通过。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_tensor/polynomial_tensor.html#sphx-glr-beginner-examples-tensor-polynomial-tensor-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现使用 PyTorch 张量手动计算正向传播,损耗和后向通过。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_autograd/polynomial_autograd.html#sphx-glr-beginner-examples-autograd-polynomial-autograd-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现使用 PyTorch 张量上的运算来计算正向传播,并使用 PyTorch autograd 来计算梯度。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_autograd/polynomial_custom_function.html#sphx-glr-beginner-examples-autograd-polynomial-custom-function-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`。 而不是将多项式写为\(y = a + bx + cx ^ 2 + dx ^ 3 \),我们将多项式写为\(y = a + b P_3(c + dx)\)其中\(P_3(x )= rac {1} {2} \ left(5x ^ 3-3x ight)\)是三次的[勒让德多项式](https://en.wikipedia.org/wiki/Legendre_polynomials)
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`。 而不是将多项式写为\(y = a + bx + cx ^ 2 + dx ^ 3 \),我们将多项式写为\(y = a + b P_3(c + dx)\)其中\(P_3(x )= rac {1} {2} \ left(5x ^ 3-3x ight)\)是三次的[勒让德多项式](https://en.wikipedia.org/wiki/Legendre_polynomials)
此实现使用 PyTorch 张量上的运算来计算正向传播,并使用 PyTorch autograd 来计算梯度。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_nn/polynomial_nn.html#sphx-glr-beginner-examples-nn-polynomial-nn-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现使用来自 PyTorch 的 nn 软件包来构建网络。 PyTorch autograd 使定义计算图和获取梯度变得容易,但是原始的 autograd 对于定义复杂的神经网络来说可能太低了。 这是 nn 软件包可以提供帮助的地方。 nn 包定义了一组模块,您可以将其视为神经网络层,该神经网络层从输入产生输出并且可能具有一些可训练的权重。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_nn/polynomial_optim.html#sphx-glr-beginner-examples-nn-polynomial-optim-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现使用来自 PyTorch 的 nn 软件包来构建网络。
......
......@@ -2,7 +2,7 @@
> 原文:<https://pytorch.org/tutorials/beginner/examples_nn/polynomial_module.html#sphx-glr-beginner-examples-nn-polynomial-module-py>
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测\(y = \ sin(x)\)`-pi``pi`
经过训练的三阶多项式,可以通过最小化平方的欧几里得距离来预测`y = sin(x)``-pi``pi`
此实现将模型定义为自定义 Module 子类。 每当您想要一个比现有模块的简单序列更复杂的模型时,都需要以这种方式定义模型。
......
......@@ -244,7 +244,7 @@ Epsilon: 0.3 Test Accuracy = 869 / 10000 = 0.0869
### 准确率与 Epsilon
第一个结果是精度与ε曲线的关系。 如前所述,随着ε的增加,我们预计测试精度会降低。 这是因为更大的ε意味着我们朝着将损失最大化的方向迈出了更大的一步。 请注意,即使 epsilon 值是线性间隔的,曲线中的趋势也不是线性的。 例如,\(\ epsilon = 0.05 \)处的精度仅比\(\ epsilon = 0 \)低约 4%,但\(\ epsilon = 0.2 \)处的精度比\(\ epsilon = 0.15 \)。 另外,请注意,模型的准确率在\(\ epsilon = 0.25 \)和\(\ epsilon = 0.3 \)之间达到 10 类分类器的随机准确率。
第一个结果是精度与ε曲线的关系。 如前所述,随着ε的增加,我们预计测试精度会降低。 这是因为更大的ε意味着我们朝着将损失最大化的方向迈出了更大的一步。 请注意,即使 epsilon 值是线性间隔的,曲线中的趋势也不是线性的。 例如,`ε = 0.05`处的精度仅比\(\ epsilon = 0 \)低约 4%,但`ε = 0.2`处的精度比`ε = 0.15`。 另外,请注意,模型的准确率在`ε = 0.25`和`ε = 0.3`之间达到 10 类分类器的随机准确率。
```py
plt.figure(figsize=(5,5))
......@@ -262,7 +262,7 @@ plt.show()
### 对抗示例样本
还记得没有免费午餐的想法吗? 在这种情况下,随着ε的增加,测试精度降低,但扰动变得更容易察觉。 实际上,在攻击者必须考虑的准确率下降和可感知性之间要进行权衡。 在这里,我们展示了每个 epsilon 值下成功对抗示例的一些示例。 绘图的每一行显示不同的ε值。 第一行是\(\ epsilon = 0 \)示例,这些示例表示没有干扰的原始“干净”图像。 每张图片的标题均显示“原始分类->对抗分类”。 注意,扰动在\(\ epsilon = 0.15 \)处开始变得明显,而在\(\ epsilon = 0.3 \)处则非常明显。 但是,在所有情况下,尽管增加了噪音,人类仍然能够识别正确的类别。
还记得没有免费午餐的想法吗? 在这种情况下,随着ε的增加,测试精度降低,但扰动变得更容易察觉。 实际上,在攻击者必须考虑的准确率下降和可感知性之间要进行权衡。 在这里,我们展示了每个 epsilon 值下成功对抗示例的一些示例。 绘图的每一行显示不同的ε值。 第一行是\(\ epsilon = 0 \)示例,这些示例表示没有干扰的原始“干净”图像。 每张图片的标题均显示“原始分类->对抗分类”。 注意,扰动在`ε = 0.15`处开始变得明显,而在`ε = 0.3`处则非常明显。 但是,在所有情况下,尽管增加了噪音,人类仍然能够识别正确的类别。
```py
# Plot several examples of adversarial samples at each epsilon
......
......@@ -14,9 +14,9 @@
GAN 是用于教授 DL 模型以捕获训练数据分布的框架,因此我们可以从同一分布中生成新数据。 GAN 由 Ian Goodfellow 于 2014 年发明,并在论文[生成对抗网络](https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf)中首次进行了描述。 它们由两个不同的模型组成:*生成器**判别器*。 生成器的工作是生成看起来像训练图像的“假”图像。 判别器的工作是查看图像并从生成器输出它是真实的训练图像还是伪图像。 在训练过程中,生成器不断尝试通过生成越来越好的伪造品而使判别器的性能超过智者,而判别器正在努力成为更好的侦探并正确地对真实和伪造图像进行分类。 博弈的平衡点是当生成器生成的伪造品看起来像直接来自训练数据时,而判别器则总是猜测生成器输出是真实还是伪造品的 50% 置信度。
现在,让我们从鉴别符开始定义一些在整个教程中使用的符号。 令`x`为代表图像的数据。 \(D(x)\)是判别器网络,其输出`x`来自训练数据而不是生成器的(标量)概率。 在这里,由于我们要处理图像,因此\(D(x)\)的输入是 CHW 大小为 3x64x64 的图像。 直观地,当`x`来自训练数据时,\(D(x)\)应该为高,而当`x`来自发生器时,它应该为低。 \(D(x)\)也可以被认为是传统的二分类器。
现在,让我们从鉴别符开始定义一些在整个教程中使用的符号。 令`x`为代表图像的数据。 `D(x)`是判别器网络,其输出`x`来自训练数据而不是生成器的(标量)概率。 在这里,由于我们要处理图像,因此`D(x)`的输入是 CHW 大小为 3x64x64 的图像。 直观地,当`x`来自训练数据时,`D(x)`应该为高,而当`x`来自发生器时,它应该为低。 `D(x)`也可以被认为是传统的二分类器。
对于生成器的表示法,令`z`是从标准正态分布中采样的潜在空间向量。 \(G(z)\)表示将隐向量`z`映射到数据空间的生成器函数。 `G`的目标是估计训练数据来自(\(p_ {data} \))的分布,以便它可以从该估计分布(`p_g`)生成假样本。
对于生成器的表示法,令`z`是从标准正态分布中采样的潜在空间向量。 `G(z)`表示将隐向量`z`映射到数据空间的生成器函数。 `G`的目标是估计训练数据来自(\(p_ {data} \))的分布,以便它可以从该估计分布(`p_g`)生成假样本。
因此,\(D(G(z))\)是发生器`G`的输出是真实图像的概率(标量)。 如 [Goodfellow 的论文](https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf)中所述,`D``G`玩一个 minimax 游戏,其中`D`试图最大化其正确分类实物和假物(\(logD( x)\)),并且`G`尝试最小化`D`预测其输出为假的概率(\(log(1-D(G(g(x)))\))。 从本文来看,GAN 损失函数为
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册