提交 73851ef4 编写于 作者: W wizardforcel

2021-01-15 22:04:24

上级 e0feabce
......@@ -511,7 +511,7 @@ EDA 流程很有用,因为它有助于开发人员发现对于定义操作过
注意
请注意,只要将变量放在笔记本中单元格的末尾,Jupyter Notebook 便可以打印变量的值,而无需使用打印功能。 在任何其他编程平台或任何其他情况下,请确保使用打印功能。
请注意,只要将变量放在笔记本中单元格的末尾,Jupyter 笔记本便可以打印变量的值,而无需使用打印功能。 在任何其他编程平台或任何其他情况下,请确保使用打印功能。
例如,打印包含异常值的结果字典的等效方法(也是最佳实践)将使用 print 语句,如下所示:`print(outliers)`。 这样,在不同的编程平台上运行时,代码将具有相同的输出。
......
......@@ -106,7 +106,7 @@
注意
准备 DCCC 数据集的过程将在本节中进行处理,并附带简要说明。 考虑到它将是后续活动的起点,请随时打开 Jupyter Notebook 并复制此过程。
准备 DCCC 数据集的过程将在本节中进行处理,并附带简要说明。 考虑到它将是后续活动的起点,请随时打开 Jupyter 笔记本并复制此过程。
但是,在开始训练模型之前,必须处理一些关键方面。 您已经从上一章中了解了其中的大多数内容,这些内容将应用于当前数据集,并在目标特征中添加了类不平衡的修订:
......@@ -684,8 +684,8 @@ batch_size = 100
图 3.9:用于在训练集上计算模型错误率的方程式
3. 从训练集误差 **A)**中减去贝叶斯误差。 保存差异,将用于进一步分析。
4. 从验证集错误 **B)**中减去训练集错误,并保存差值。
3. 从训练集误差`A)`中减去贝叶斯误差。 保存差异,将用于进一步分析。
4. 从验证集错误`B)`中减去训练集错误,并保存差值。
5. Take the differences calculated in Steps 3 and 4 and use the following set of rules:
如果在“步骤 3”中计算出的差大于在“步骤 4”中计算出的差,则该模型不适合,也称为遭受高偏差。
......@@ -730,7 +730,7 @@ batch_size = 100
验证设置误差(VSE)= 1 – 0.71 = 0.29
用作两组精度的值(`0.716`和`0.71`)是在*活动 3.01* ,*建立 ANN*
用作两组精度的值(`0.716`和`0.71`)是在“活动 3.01”,“建立 ANN”
高偏置= TSE – BE = 0.134
......@@ -785,7 +785,7 @@ batch_size = 100
就像您想象的那样,每次都要对模型进行重新训练是非常不切实际的,尤其是考虑到大多数深度学习模型可能需要花费很多时间进行训练(取决于您的资源)。
取而代之的是,可以训练,保存和重新加载 PyTorch 中的模型,以执行进一步的训练或进行推理。 可以考虑将 PyTorch 模型中每一层的参数(权重和偏差)保存到 **state_dict** 字典中来实现。
取而代之的是,可以训练,保存和重新加载 PyTorch 中的模型,以执行进一步的训练或进行推理。 可以考虑将 PyTorch 模型中每一层的参数(权重和偏差)保存到`state_dict`字典中来实现。
此处提供了有关如何保存和加载经过训练的模型的分步指南:
......@@ -822,7 +822,7 @@ batch_size = 100
模型= load_model_checkpoint(“ checkpoint.pth”)
该函数将输入保存的模型文件(检查点)的路径作为输入。 首先,加载检查点。 接下来,使用保存在 Python 文件中的网络体系结构实例化模型。 在这里, **final_model** 指的是应该已经导入到新工作表中的 Python 文件的名称,而 **Classifier()**指的是该文件中保存的类的名称。 该模型将具有随机初始化的参数。 最后,将来自检查点的参数加载到模型中。
该函数将输入保存的模型文件(检查点)的路径作为输入。 首先,加载检查点。 接下来,使用保存在 Python 文件中的网络体系结构实例化模型。 在这里, `final_model`指的是应该已经导入到新工作表中的 Python 文件的名称,而`Classifier()`指的是该文件中保存的类的名称。 该模型将具有随机初始化的参数。 最后,将来自检查点的参数加载到模型中。
调用时,此函数将返回已训练的模型,该模型现在可用于进一步的训练或执行推理。
......@@ -834,11 +834,11 @@ batch_size = 100
鉴于此,PyTorch 最近提出了一种简单的方法,使用户可以享受两全其美的好处。 尽管他们可以继续使用 Pythonic 进行编程,但是现在可以将模型序列化为可以从 C ++加载和执行的表示形式,而无需依赖 Python。 这种表示称为 TorchScript。
通过 PyTorch 的**即时****JIT**)编译器模块可以将 PyTorch 模型转换为 TorchScript。 这是通过将模型以及示例输入通过 **torch.jit.trace()**函数传递来实现的,如下所示:
通过 PyTorch 的**即时****JIT**)编译器模块可以将 PyTorch 模型转换为 TorchScript。 这是通过将模型以及示例输入通过`torch.jit.trace()`函数传递来实现的,如下所示:
traced_script = torch.jit.trace(模型,示例)
请记住,名为**模型**的变量应包含以前训练过的模型,而名为**示例的示例**的变量应包含希望提供给模型以便执行的功能 预测。 这将返回一个脚本模块,可以将其用作常规的 PyTorch 模块,如下所示:
请记住,名为`model`的变量应包含以前训练过的模型,而名为`example`的变量应包含希望提供给模型以便执行的功能 预测。 这将返回一个脚本模块,可以将其用作常规的 PyTorch 模块,如下所示:
预测= traced_script(输入)
......@@ -854,9 +854,9 @@ traced_script = torch.jit.trace(模型,示例)
* **Hypertext Transfer Protocol** (**HTTP**): This is the primary means of transferring data on the web. It works using **methods**, which help to determine the way in which data is transferred. The two most commonly used methods are explained as follows:
**POST**:此方法允许您将消息中的数据从客户端(正在向 API 发出请求的 Web 浏览器或平台)发送到服务器(使用该信息运行的程序) 身体。
`POST`:此方法允许您将消息中的数据从客户端(正在向 API 发出请求的 Web 浏览器或平台)发送到服务器(使用该信息运行的程序) 身体。
**GET**:与 **POST** 方法相反,此方法将数据作为 URL 的一部分发送,这在发送大量数据时可能不方便。
`GET`:与`POST`方法相反,此方法将数据作为 URL 的一部分发送,这在发送大量数据时可能不方便。
* **Flask**:这是一个为 Python 开发的库,可让您创建 API(以及其他功能)。
......@@ -878,7 +878,7 @@ traced_script = torch.jit.trace(模型,示例)
app.config [“ DEBUG”] = True
**DEBUG** 配置在开发期间设置为 **True** ,但在生产中应设置为 **False**
`DEBUG`配置在开发期间设置为`True`,但在生产中应设置为`False`
3. Load a previously trained model:
......@@ -920,7 +920,7 @@ traced_script = torch.jit.trace(模型,示例)
app.run(debug = True,use_reloader = False)
同样,在开发过程中,**调试**设置为 **True** 。 **use_reloader** 参数设置为**假**,以允许该应用程序在 Jupyter Notebook 上运行。 但是,不建议从 Jupyter Notebook 运行该应用程序。 这仅出于教学目的。 在现实生活中,应将 **use_reloader** 设置为 **True** ,并且应通过命令提示符实例或终端将应用程序作为 Python 文件运行。
同样,在开发过程中,`DEBUG`设置为`True`。 `use_reloader`参数设置为`False`,以允许该应用程序在 Jupyter 笔记本上运行。 但是,不建议从 Jupyter 笔记本运行该应用程序。 这仅出于教学目的。 在现实生活中,应将`use_reloader`设置为`True`,并且应通过命令提示符实例或终端将应用程序作为 Python 文件运行。
## 练习 3.03:创建 Web API
......@@ -967,7 +967,7 @@ traced_script = torch.jit.trace(模型,示例)
http://127.0.0.1:5000/your_name
*输入*,然后将加载一个简单的网站,该网站应类似于以下内容:
`Enter`,然后将加载一个简单的网站,该网站应类似于以下内容:
![Figure 3.12: Result from performing a request to the API ](img/B15778_03_12.jpg)
......@@ -989,10 +989,10 @@ traced_script = torch.jit.trace(模型,示例)
该活动将使用三个 Jupyter 笔记本。 首先,我们将使用上一个活动中的同一笔记本来保存最终模型。 接下来,我们将打开一个新的笔记本,该笔记本将用于加载保存的模型。 最后,将使用第三个笔记本创建 API。
1. 打开用于*活动 3.02**提高模型性能*的 Jupyter 笔记本。
2. 复制包含最佳性能模型的体系结构的类,并将其保存在 Python 文件中。 确保导入 PyTorch 所需的库和模块。 将其命名为 **final_model.py**
3. 在 Jupyter Notebook 中,保存性能最佳的模型。 确保保存与输入单元有关的信息以及模型参数。 将其命名为 **checkpoint.pth**
4. 打开一个新的 Jupyter Notebook
1. 打开用于“活动 3.02”和“提高模型表现”的 Jupyter 笔记本。
2. 复制包含最佳性能模型的体系结构的类,并将其保存在 Python 文件中。 确保导入 PyTorch 所需的库和模块。 将其命名为`final_model.py`
3. 在 Jupyter 笔记本中,保存性能最佳的模型。 确保保存与输入单元有关的信息以及模型参数。 将其命名为`checkpoint.pth`
4. 打开一个新的 Jupyter 笔记本
5. 导入 PyTorch 以及我们在“步骤 2”中创建的 Python 文件。
6. 创建一个加载模型的函数。
7. Perform a prediction by inputting the following tensor into your model:
......@@ -1012,7 +1012,7 @@ traced_script = torch.jit.trace(模型,示例)
10. 打开一个新的 Jupyter Notebook,然后导入使用 Flask 创建 API 所需的库以及加载已保存模型的库。
11. 初始化 Flask 应用。
12. 定义一个函数来加载保存的模型并实例化该模型。
13. 定义 API 的路由,使其为 **/ prediction** ,并定义方法为 **POST** 。 然后,定义将接收 **POST** 数据并将其馈送到模型以执行预测的函数。
13. 定义 API 的路由,使其为`/prediction`,并定义方法为`POST`。 然后,定义将接收`POST`数据并将其馈送到模型以执行预测的函数。
14. 运行 Flask 应用。
运行后,该应用程序将如下所示:
......
......@@ -22,7 +22,7 @@
康达安装火炬 torchvision -c pytorch
要检查 PyTorch 是否正常工作,我们可以打开 Jupyter Notebook 并运行一些简单的命令:
要检查 PyTorch 是否正常工作,我们可以打开 Jupyter 笔记本并运行一些简单的命令:
1. To define a Tensor in PyTorch, we can do the following:
......
......@@ -152,7 +152,7 @@ tensorboard --logdir=runs
![intermediate/../../_static/img/tensorboard_first_view.png](img/8b09d6361316e495383ceedf9b8407ea.png)
现在您知道如何使用 TensorBoard 了! 但是,此示例可以在 Jupyter Notebook 中完成-TensorBoard 真正擅长的地方是创建交互式可视化。 接下来,我们将介绍其中之一,并在本教程结束时介绍更多内容。
现在您知道如何使用 TensorBoard 了! 但是,此示例可以在 Jupyter 笔记本中完成-TensorBoard 真正擅长的地方是创建交互式可视化。 接下来,我们将介绍其中之一,并在本教程结束时介绍更多内容。
## 3.使用 TensorBoard 检查模型](docs / modern-java-zh /
......@@ -345,4 +345,4 @@ for i in range(len(classes)):
![intermediate/../../_static/img/tensorboard_pr_curves.png](img/d15de2be2b754f9a4f46418764232b5e.png)
这是 TensorBoard 和 PyTorch 与之集成的介绍。 当然,您可以在 Jupyter Notebook 中完成 TensorBoard 的所有操作,但是使用 TensorBoard 时,默认情况下会获得交互式的视觉效果。
\ No newline at end of file
这是 TensorBoard 和 PyTorch 与之集成的介绍。 当然,您可以在 Jupyter 笔记本中完成 TensorBoard 的所有操作,但是使用 TensorBoard 时,默认情况下会获得交互式的视觉效果。
\ No newline at end of file
......@@ -712,7 +712,7 @@ print(torch.ops.my_ops.warp_perspective)
自然,最佳实践是仅在源代码相当短的情况下才使用`torch.utils.cpp_extension.load_inline`
请注意,如果您在 Jupyter Notebook 中使用此功能,则不应多次执行单元格的注册,因为每次执行都会注册一个新库并重新注册自定义运算符。 如果需要重新执行它,请事先重新启动笔记本的 Python 内核。
请注意,如果您在 Jupyter 笔记本中使用此功能,则不应多次执行单元格的注册,因为每次执行都会注册一个新库并重新注册自定义运算符。 如果需要重新执行它,请事先重新启动笔记本的 Python 内核。
### 使用 Setuptools 构建] [docs / modern-java-zh /
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册