提交 338c837b 编写于 作者: R rongruosong 提交者: Aston Zhang

revise model-construction (#343)

* '错别字修改'

* revise subscript

* keep index original

* keep original

* 语句错别字修改

* keep original

* keep original
上级 09260b4a
......@@ -6,7 +6,7 @@
## 继承Block类来构造模型
Block类是`nn`模块里提供的一个模型构造类,我们可以继承它来定义我们想要的模型。我们在这里构造一个同前提到的相同的多层感知机。这里定义的MLP类重载了Block类的两个函数:`__init__``forward`,分别对应创建模型参数和定义前向计算。
Block类是`nn`模块里提供的一个模型构造类,我们可以继承它来定义我们想要的模型。我们在这里构造一个同前提到的相同的多层感知机。这里定义的MLP类重载了Block类的两个函数:`__init__``forward`,分别对应创建模型参数和定义前向计算。
```{.python .input n=1}
from mxnet import nd
......@@ -34,15 +34,15 @@ net.initialize()
net(x)
```
其中,`net(x)`会调用MLP继承至Block的`__call__`函数,这个函数将调用MLP定义的`forward`函数来完成前向计算。
其中,`net(x)`会调用了MLP继承自Block的`__call__`函数,这个函数将调用MLP定义的`forward`函数来完成前向计算。
我们无需在这里定义反向传播函数,系统将通过自动求导,参考[“自动求梯度”](../chapter_prerequisite/autograd.md)一节,来自动生成`backward`函数。
注意到我们不是将Block叫做层或者模型之类的名字,这是因为它是一个可以自由组建的部件。它的子类既可以一个层,例如Gluon提供的Dense类;也可以是一个模型,例如这里定义的MLP类;或者是模型的一个部分。我们下面通过两个例子来展示它的灵活性。
注意到我们不是将Block叫做层或者模型之类的名字,这是因为它是一个可以自由组建的部件。它的子类既可以一个层,例如Gluon提供的Dense类;也可以是一个模型,例如这里定义的MLP类;或者是模型的一个部分。我们下面通过两个例子来展示它的灵活性。
## Sequential类继承自Block类
当模型的前向计算就是简单串行计算模型里面各个层的时候,我们可以将模型定义变得更加简单,这个就是Sequential类的目的,它通过`add`函数来添加Block子类实例,前向计算时就是将添加的实例逐一运行。下面我们实现一个跟Sequential类有相同功能的类,这样你可以看的更加清楚它的运行机制。
当模型的前向计算就是简单串行计算模型里面各个层的时候,我们可以将模型定义变得更加简单,这个就是Sequential类的目的,它通过`add`函数来添加Block子类实例,前向计算时就是将添加的实例逐一运行。下面我们实现一个跟Sequential类有相同功能的类,这样可以帮助你更加清晰地理解它的运行机制。
```{.python .input n=3}
class MySequential(nn.Block):
......@@ -76,7 +76,7 @@ net(x)
## 构造复杂的模型
虽然Sequential类可以使得模型构造更加简单,不需要定义`forward`函数,但直接继承Block类可以极大拓展灵活性。下面我们构造一个稍微复杂点的网络。在这个网络中,我们通过`get_constant`函数创建训练中不被迭代的参数,即常数参数。在前向计算中,除了使用创建的常数参数外,我们还使用NDArray的函数和Python的控制流,并多次调用同一层。
虽然Sequential类可以使得模型构造更加简单,不需要定义`forward`函数,但直接继承Block类可以极大拓展灵活性。下面我们构造一个稍微复杂点的网络。在这个网络中,我们通过`get_constant`函数创建训练中不被迭代的参数,即常数参数。在前向计算中,除了使用创建的常数参数外,我们还使用NDArray的函数和Python的控制流,并多次调用同一层。
```{.python .input n=5}
class FancyMLP(nn.Block):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册