提交 976bb343 编写于 作者: W wizardforcel

2021-01-21 20:42:40

上级 d24ae982
# 结论和其他方法
# 总结和其他方法
在这本书中,我们了解了用于深度学习的各种形式的架构,以及从手动特征提取到变型贝叶斯框架的各种技术和方法。 一次学习是一个特别活跃的研究领域,因为它专注于根据人类的神经能力更紧密地建立一种机器意识。 过去 5 年中,随着深度学习社区的进步,我们至少可以说,我们正在开发一种可以像人类一样同时学习多个任务的机器。 在这一章中,我们将看到一次学习还有哪些其他选择,并讨论本书中未深入探讨的其他方法。
......
......@@ -142,7 +142,7 @@ def fgsm_attack(image, epsilon, data_grad):
```
### 测试功能
### 测试函数
最后,本教程的主要结果来自`test`函数。 每次调用此测试功能都会在 MNIST 测试集上执行完整的测试步骤,并报告最终精度。 但是,请注意,此功能还需要`epsilon`输入。 这是因为`test`函数报告实力为`ε`的来自对手的攻击模型的准确率。 更具体地说,对于测试集中的每个样本,函数都会计算输入数据`data_grad`的损耗梯度,并使用`fgsm_attack`创建一个扰动图像`perturbed_data`,然后检查受干扰的示例是否具有对抗性。 除了测试模型的准确率外,该功能还保存并返回了一些成功的对抗示例,以供以后可视化。
......@@ -262,7 +262,7 @@ plt.show()
### 对抗示例样本
还记得没有免费午餐的想法吗? 在这种情况下,随着ε的增加,测试精度降低,但扰动变得更容易察觉。 实际上,在攻击者必须考虑的准确率下降和可感知性之间要进行权衡。 在这里,我们展示了每个`ε`值下成功对抗示例的一些示例。 绘图的每一行显示不同的ε值。 第一行是`ε = 0`示例,这些示例表示没有干扰的原始“干净”图像。 每张图片的标题均显示“原始分类->对抗分类”。 注意,扰动在`ε = 0.15`处开始变得明显,而在`ε = 0.3`处则非常明显。 但是,在所有情况下,尽管增加了噪音,人类仍然能够识别正确的类别。
还记得没有免费午餐的想法吗? 在这种情况下,随着`ε`的增加,测试精度降低,但扰动变得更容易察觉。 实际上,在攻击者必须考虑的准确率下降和可感知性之间要进行权衡。 在这里,我们展示了每个`ε`值下成功对抗示例的一些示例。 绘图的每一行显示不同的`ε`值。 第一行是`ε = 0`示例,这些示例表示没有干扰的原始“干净”图像。 每张图片的标题均显示“原始分类->对抗分类”。 注意,扰动在`ε = 0.15`处开始变得明显,而在`ε = 0.3`处则非常明显。 但是,在所有情况下,尽管增加了噪音,人类仍然能够识别正确的类别。
```py
# Plot several examples of adversarial samples at each epsilon
......
# 音讯
\ No newline at end of file
# 音频
\ No newline at end of file
......@@ -233,7 +233,7 @@ Median relative difference between original and MuLaw reconstucted signals: 1.28
```
## 功能
## 函数
上面看到的转换依赖于较低级别的无状态函数进行计算。 这些功能在`torchaudio.functional`下可用。 完整列表在[此处](https://pytorch.org/audio/functional.html),包括:
......@@ -357,7 +357,7 @@ Mean of highpass_waveform: 1.8138147234170177e-11
```
## 从 Kaldi 迁移到 torchaudio
## 从 Kaldi 迁移到`torchaudio`
用户可能熟悉 [Kaldi](http://github.com/kaldi-asr/kaldi) (一种用于语音识别的工具包)。 `torchaudio`提供与`torchaudio.kaldi_io`中的兼容性。 实际上,它可以通过以下方式从 kaldi scp 或 ark 文件或流中读取:
......@@ -486,7 +486,7 @@ Labels: [0, 0, 1, 0, 0, 0, 1, 0]
现在,每当您从数据集中请求声音文件时,仅当您请求声音文件时,它才会加载到内存中。 这意味着,数据集仅加载所需的项目并将其保留在内存中,并保存在内存中。
## 结论
## 总结
我们使用示例原始音频信号或波形来说明如何使用`torchaudio`打开音频文件,以及如何对该波形进行预处理,变换和应用功能。 我们还演示了如何使用熟悉的 Kaldi 函数以及如何利用内置数据集构建模型。 鉴于`torchaudio`是基于 PyTorch 构建的,因此这些技术可以在利用 GPU 的同时,用作语音识别等更高级音频应用的构建块。
......
......@@ -443,7 +443,7 @@ ipd.Audio(waveform.numpy(), rate=sample_rate)
```
## 结论
## 总结
在本教程中,我们使用了`torchaudio`来加载数据集并对信号进行重新采样。 然后,我们定义了经过训练的神经网络,以识别给定命令。 还有其他数据预处理方法,例如找到梅尔频率倒谱系数(MFCC),可以减小数据集的大小。 此变换也可以在`torchaudio`中作为`torchaudio.transforms.MFCC`使用。
......
......@@ -658,7 +658,7 @@ Episode 0 - Step 40 - Epsilon 0.9999900000487484 - Mean Reward 231.0 - Mean Leng
```
## 结论
## 总结
在本教程中,我们看到了如何使用 PyTorch 来训练玩游戏的 AI。 您可以使用相同的方法训练 AI 在 [OpenAI Gym](https://gym.openai.com/)上玩任何游戏。 希望您喜欢本教程,请随时通过[我们的 Github](https://github.com/yuansongFeng/MadMario/) 与我们联系!
......
......@@ -594,7 +594,7 @@ print(output.names)
```
### 结论
### 总结
感谢您的阅读! 命名张量仍在发展中。 如果您有反馈和/或改进建议,请通过创建 [ISSUE](https://github.com/pytorch/pytorch/issues) 来通知我们。
......
......@@ -954,7 +954,7 @@ Saved out.png
数字! 万岁! 现在,事情就在您的球场上了:您可以改进模型以使数字看起来更好吗?
## 结论
## 总结
希望本教程为您提供了 PyTorch C++ 前端的可摘要。 像 PyTorch 这样的机器学习库必然具有非常广泛的 API。 因此,有许多概念我们没有时间或空间来讨论。 但是,我建议您尝试一下 API,并在遇到问题时查阅[我们的文档](https://pytorch.org/cppdocs/),尤其是[库 API](https://pytorch.org/cppdocs/api/library_root.html) 部分。 另外,请记住,只要我们能够做到,就可以期望 C++ 前端遵循 Python 前端的设计和语义,因此您可以利用这一事实来提高学习率。
......
......@@ -991,6 +991,6 @@ Forward: 129.431 us | Backward 304.641 us
更多性能提升!
## 结论
## 总结
现在,您应该对 PyTorch 的 C++ 扩展机制有了一个很好的了解,并有使用它们的动机。 [您可以在此处找到本说明中显示的代码示例](https://github.com/pytorch/extension-cpp)。 如有疑问,请使用[论坛](https://discuss.pytorch.org)。 另外,请务必查看我们的[常见问题解答](https://pytorch.org/cppdocs/notes/faq.html),以防遇到任何问题。
\ No newline at end of file
......@@ -621,7 +621,7 @@ $ ./example_app example.pt
成功! 您现在可以推断了。
## 结论
## 总结
本教程向您介绍了如何在 C++ 中实现自定义 TorchScript 运算符,如何将其构建到共享库中,如何在 Python 中使用它来定义 TorchScript 模型以及如何将其加载到 C++ 应用中以进行推理工作负载。 现在,您可以使用与第三方 C++ 库进行接口的 C++ 运算符扩展 TorchScript 模型,编写自定义的高性能 CUDA 内核,或实现任何其他需要 Python,TorchScript 和 C++ 之间的界线才能平稳融合的用例。
......
......@@ -522,7 +522,7 @@ class TryCustomOp(torch.nn.Module):
注册使用 C++ 类作为参数的运算符时,要求已注册自定义类。 您可以通过确保自定义类注册和您的自由函数定义在同一`TORCH_LIBRARY`块中,并确保自定义类注册位于第一位来强制实现此操作。 将来,我们可能会放宽此要求,以便可以按任何顺序进行注册。
## 结论
## 总结
本教程向您介绍了如何向 TorchScript(以及扩展为 Python)公开 C++ 类,如何注册其方法,如何从 Python 和 TorchScript 使用该类以及如何使用该类保存和加载代码以及运行该代码。 在独立的 C++ 过程中。 现在,您可以使用与第三方 C++ 库连接的 C++ 类扩展 TorchScript 模型,或实现需要 Python,TorchScript 和 C++ 之间的界线平滑融合的任何其他用例。
......
......@@ -228,6 +228,6 @@ def forward(self, x : torch.Tensor) -> torch.Tensor:
现在我们可以看到所有`LSTM`实例都在完全并行运行。
## 结论
## 总结
在本教程中,我们学习了`fork()``wait()`,这是在 TorchScript 中执行动态,互操作并行的基本 API。 我们看到了一些典型的使用模式,这些模式使用这些函数并行执行 TorchScript 代码中的函数,方法或`Modules`的执行。 最后,我们通过一个使用该技术优化模型的示例进行了研究,并探索了 PyTorch 中可用的性能测量和可视化工具。
\ No newline at end of file
......@@ -409,6 +409,6 @@ std::cout << x.grad() << std::endl;
翻译后,您的大多数 Python Autograd 代码都应仅在 C++ 中工作。 如果不是这种情况,请在 [GitHub ISSUE](https://github.com/pytorch/pytorch/issues) 中提交错误报告,我们将尽快对其进行修复。
## 结论
## 总结
现在,您应该对 PyTorch 的 C++ autograd API 有了一个很好的了解。 [您可以在此处找到本说明中显示的代码示例](https://github.com/pytorch/examples/tree/master/cpp/autograd)。 与往常一样,如果您遇到任何问题或疑问,可以使用我们的[论坛](https://discuss.pytorch.org/)[GitHub ISSUE](https://github.com/pytorch/pytorch/issues) 进行联系。
\ No newline at end of file
......@@ -383,7 +383,7 @@ elapsed time (seconds): 166.3
在没有量化的情况下在 MacBook Pro 上本地运行此操作,推理大约需要 200 秒,而量化则只需大约 100 秒。
## 结论
## 总结
动态量化可能是减小模型大小的简单方法,而对精度的影响有限。
......
......@@ -427,7 +427,7 @@ loaded_quantized_model = torch.jit.load("bert_traced_eager_quant.pt")
```
## 结论
## 总结
在本教程中,我们演示了如何演示如何将 BERT 等著名的最新 NLP 模型转换为动态量化模型。 动态量化可以减小模型的大小,而对准确率的影响有限。
......
......@@ -798,7 +798,7 @@ Elapsed time: 4 ms
在 MacBook Pro 上本地运行此程序,常规模型的运行时间为 61 毫秒,而量化模型的运行时间仅为 20 毫秒,这说明了量化模型与浮点模型相比,典型的 2-4 倍加速。
## 结论
## 总结
在本教程中,我们展示了两种量化方法-训练后静态量化和量化感知训练-描述它们在“幕后”进行的操作以及如何在 PyTorch 中使用它们。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册