update ch03 (#338)

This commit is contained in:
Jiarong Han
2022-05-11 22:11:02 +08:00
committed by GitHub
parent 0e75ed2506
commit 444a4adeb7
2 changed files with 3 additions and 3 deletions

View File

@@ -7,7 +7,7 @@
:label:`simpledag`
### 张量和算子
在计算框架中基础组件包含张量和算子张量是基础数据结构算子是基本运算单元。在数学中定义张量是基于向量与矩阵的推广涵盖标量、向量与矩阵的概念。可以将标量理解为零阶张量向量为一阶张量我们熟悉的RGB彩色图像即为三阶张量。在计算框架中张量不仅存储数据还存储数据类型、数据形状、维度或秩以及梯度传递状态等多个属性如:numref:`tensor_attr`所示,列举了主要的属性和功能。
在计算框架中基础组件包含张量和算子张量是基础数据结构算子是基本运算单元。在数学中定义张量是基于向量与矩阵的推广涵盖标量、向量与矩阵的概念。可以将标量理解为零阶张量向量为一阶张量我们熟悉的RGB彩色图像即为三阶张量。在计算框架中张量不仅存储数据还存储数据类型、数据形状、维度或秩以及梯度传递状态等多个属性如:numref:`tensor_attr`所示,列举了主要的属性和功能。可以通过[代码示例](https://github.com/openmlsys/openmlsys-pytorch/blob/master/chapter_computational_graph/tensor.py)查看张量的属性和部分操作展示
:张量属性
@@ -175,4 +175,4 @@ grad_W = matmul(transpose(X), grad_X1)
:width:`600px`
:label:`chain`
在深度学习计算框架中,控制流可以进行嵌套,比如多重循环和循环条件控制,计算图会对复杂控制流进行准确的描述,以便于执行正确的计算调度与执行任务。
在深度学习计算框架中,控制流可以进行嵌套,比如多重循环和循环条件控制,计算图会对复杂控制流进行准确的描述,以便于执行正确的计算调度与执行任务。可以通过[代码示例](https://github.com/openmlsys/openmlsys-pytorch/blob/master/chapter_computational_graph/control_flow.py)查看在条件控制和循环控制下,前向和反向计算的数据流。

View File

@@ -129,7 +129,7 @@ def model(X, flag):
```
代码中模型整体可以采用动态生成,而\@ms\_function可以使用基于源码转换的技术将模块*add_and_relu*的转化为静态图结构。与动态生成中代码执行相同,模型接受输入按照模型定义的计算顺序进行调度执行,并生成临时图结构,当执行语句*Y=add_and_relu(Y,b)* 时,计算框架会自动调用该模块静态生成的图结构执行计算。模块*add_and_relu* 可以利用静态图中的优化技术来提高计算性能,实现动态图和静态图的混合执行。此外,动静态转换的技术常用于模型部署阶段,动态图预测部署时除了需要已经训练完成的参数文件,还须提供最初的模型组网前端代码,这使得动态图部署受到局限性,部署硬件中往往难以提供支持前端语言执行环境。因此当使用动态图模式训练完成模型参数后,可以将整体网络结构转换为静态图格式,将神经网络模型和参数文件进行序列化保存,与前端代码完全解耦,扩大模型部署的硬件支持范围。
主流的计算框架TensorFlow、MindSpore等均提供动静态相互转换与融合执行的技术我们将各框架中支持源码转换和追踪转换技术的接口梳理如 :numref:`dynamic_static_switch`所示。
主流的计算框架TensorFlow、MindSpore等均提供动静态相互转换与融合执行的技术我们将各框架中支持源码转换和追踪转换技术的接口梳理如 :numref:`dynamic_static_switch`所示。可以通过[代码示例](https://github.com/openmlsys/openmlsys-pytorch/blob/master/chapter_computational_graph/generate_static_graph.py)查看PyTorch计算框架中是如何将动态图模型转化为静态图模型并且展示静态图结构信息。
:主流框架动态图转换静态图支持