Skip to content

Commit 4a4f87c

Browse files
fix docs in transformer examples
1 parent 0bb3ee5 commit 4a4f87c

File tree

3 files changed

+108
-108
lines changed

3 files changed

+108
-108
lines changed

docs/zh/examples/cylinder2d_unsteady_transformer_physx.md

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,19 @@ $$Re \sim(100, 750)$$
112112

113113
首先展示代码中定义的各个参数变量,每个参数的具体含义会在下面使用到时进行解释。
114114

115-
``` py linenums="51" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
115+
``` py linenums="50" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
116116
--8<--
117-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:51:62
117+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:50:65
118118
--8<--
119119
```
120120

121121
#### 3.2.1 约束构建
122122

123123
本案例基于数据驱动的方法求解问题,因此需要使用 PaddleScience 内置的 `SupervisedConstraint` 构建监督约束。在定义约束之前,需要首先指定监督约束中用于数据加载的各个参数,代码如下:
124124

125-
``` py linenums="67" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
125+
``` py linenums="70" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
126126
--8<--
127-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:67:84
127+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:70:87
128128
--8<--
129129
```
130130

@@ -143,9 +143,9 @@ examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:67:84
143143

144144
定义监督约束的代码如下:
145145

146-
``` py linenums="86" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
146+
``` py linenums="89" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
147147
--8<--
148-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:86:94
148+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:89:97
149149
--8<--
150150
```
151151

@@ -168,37 +168,37 @@ examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:86:94
168168

169169
用 PaddleScience 代码表示如下:
170170

171-
``` py linenums="99" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
171+
``` py linenums="102" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
172172
--8<--
173-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:99:105
173+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:102:108
174174
--8<--
175175
```
176176

177177
其中,`CylinderEmbedding` 的前两个参数在前文中已有描述,这里不再赘述,网络模型的第三、四个参数是训练数据集的均值和方差,用于归一化输入数据。计算均值、方差的的代码表示如下:
178178

179-
``` py linenums="28" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
179+
``` py linenums="29" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
180180
--8<--
181-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:28:45
181+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:29:46
182182
--8<--
183183
```
184184

185185
#### 3.2.3 学习率与优化器构建
186186

187187
本案例中使用的学习率方法为 `ExponentialDecay`,学习率大小设置为0.001。优化器使用 `Adam`,梯度裁剪使用了 Paddle 内置的 `ClipGradByGlobalNorm` 方法。用 PaddleScience 代码表示如下:
188188

189-
``` py linenums="107" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
189+
``` py linenums="110" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
190190
--8<--
191-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:107:121
191+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:110:124
192192
--8<--
193193
```
194194

195195
#### 3.2.4 评估器构建
196196

197197
本案例训练过程中会按照一定的训练轮数间隔,使用验证集评估当前模型的训练情况,需要使用 `SupervisedValidator` 构建评估器。代码如下:
198198

199-
``` py linenums="123" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
199+
``` py linenums="126" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
200200
--8<--
201-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:123:150
201+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:126:153
202202
--8<--
203203
```
204204

@@ -208,39 +208,39 @@ examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:123:150
208208

209209
完成上述设置之后,只需要将上述实例化的对象按顺序传递给 `ppsci.solver.Solver`,然后启动训练、评估。
210210

211-
``` py linenums="153" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
211+
``` py linenums="156" title="examples/cylinder/2d_unsteady/transformer_physx/train_enn.py"
212212
--8<--
213-
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:153:
213+
examples/cylinder/2d_unsteady/transformer_physx/train_enn.py:156:
214214
--8<--
215215
```
216216

217217
### 3.3 Transformer 模型
218218

219219
上文介绍了如何构建 Embedding 模型的训练、评估,在本节中将介绍如何使用训练好的 Embedding 模型训练 Transformer 模型。因为训练 Transformer 模型的步骤与训练 Embedding 模型的步骤基本相似,因此本节在两者的重复部分的各个参数不再详细介绍。首先将代码中定义的各个参数变量展示如下,每个参数的具体含义会在下面使用到时进行解释。
220220

221-
``` py linenums="58" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
221+
``` py linenums="57" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
222222
--8<--
223-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:58:74
223+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:57:79
224224
--8<--
225225
```
226226

227227
#### 3.3.1 约束构建
228228

229229
Transformer 模型同样基于数据驱动的方法求解问题,因此需要使用 PaddleScience 内置的 `SupervisedConstraint` 构建监督约束。在定义约束之前,需要首先指定监督约束中用于数据加载的各个参数,代码如下:
230230

231-
``` py linenums="82" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
231+
``` py linenums="87" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
232232
--8<--
233-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:82:99
233+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:87:104
234234
--8<--
235235
```
236236

237237
数据加载的各个参数与 Embedding 模型中的基本一致,不再赘述。需要说明的是由于 Transformer 模型训练的输入数据是 Embedding 模型 Encoder 模块的输出数据,因此我们将训练好的 Embedding 模型作为 `CylinderDataset` 的一个参数,在初始化时首先将训练数据映射到编码空间。
238238

239239
定义监督约束的代码如下:
240240

241-
``` py linenums="101" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
241+
``` py linenums="106" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
242242
--8<--
243-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:101:106
243+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:106:111
244244
--8<--
245245
```
246246

@@ -255,9 +255,9 @@ examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:101:106
255255

256256
用 PaddleScience 代码表示如下:
257257

258-
``` py linenums="111" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
258+
``` py linenums="116" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
259259
--8<--
260-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:111:119
260+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:116:124
261261
--8<--
262262
```
263263

@@ -267,19 +267,19 @@ examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:111:119
267267

268268
本案例中使用的学习率方法为 `CosineWarmRestarts`,学习率大小设置为0.001。优化器使用 `Adam`,梯度裁剪使用了 Paddle 内置的 `ClipGradByGlobalNorm` 方法。用 PaddleScience 代码表示如下:
269269

270-
``` py linenums="121" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
270+
``` py linenums="126" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
271271
--8<--
272-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:121:135
272+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:126:140
273273
--8<--
274274
```
275275

276276
#### 3.3.4 评估器构建
277277

278278
训练过程中会按照一定的训练轮数间隔,使用验证集评估当前模型的训练情况,需要使用 `SupervisedValidator` 构建评估器。用 PaddleScience 代码表示如下:
279279

280-
``` py linenums="137" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
280+
``` py linenums="142" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
281281
--8<--
282-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:137:163
282+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:142:168
283283
--8<--
284284
```
285285

@@ -289,25 +289,25 @@ examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:137:163
289289

290290
在本文中首先定义了对 Transformer 模型输出数据变换到物理状态空间的代码:
291291

292-
``` py linenums="32" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
292+
``` py linenums="33" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
293293
--8<--
294-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:32:52
294+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:33:53
295295
--8<--
296296
```
297297

298-
``` py linenums="78" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
298+
``` py linenums="83" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
299299
--8<--
300-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:78:79
300+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:83:84
301301
--8<--
302302
```
303303

304304
可以看到,程序首先载入了训练好的 Embedding 模型,然后在 `OutputTransform``__call__` 函数内实现了编码向量到物理状态空间的变换。
305305

306306
在定义好了以上代码之后,就可以实现可视化器代码的构建了:
307307

308-
``` py linenums="165" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
308+
``` py linenums="170" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
309309
--8<--
310-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:165:193
310+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:170:197
311311
--8<--
312312
```
313313

@@ -317,9 +317,9 @@ examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:165:193
317317

318318
完成上述设置之后,只需要将上述实例化的对象按顺序传递给 `ppsci.solver.Solver`,然后启动训练、评估。
319319

320-
``` py linenums="193" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
320+
``` py linenums="199" title="examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py"
321321
--8<--
322-
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:193:
322+
examples/cylinder/2d_unsteady/transformer_physx/train_transformer.py:199:
323323
--8<--
324324
```
325325

0 commit comments

Comments
 (0)