Skip to content

Commit

Permalink
Modify the document of heat_pinn (#1001)
Browse files Browse the repository at this point in the history
  • Loading branch information
liaoxin2 authored Oct 9, 2024
1 parent 820d794 commit 83f6739
Showing 1 changed file with 20 additions and 26 deletions.
46 changes: 20 additions & 26 deletions docs/zh/examples/heat_pinn.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ $$

上式中 $f$ 即为 MLP 模型本身,用 PaddleScience 代码表示如下

``` py linenums="34"
``` py linenums="102"
--8<--
examples/heat_pinn/heat_pinn.py:34:35
examples/heat_pinn/heat_pinn.py:102:103
--8<--
```

Expand All @@ -87,9 +87,9 @@ examples/heat_pinn/heat_pinn.py:34:35

由于二维热传导方程使用的是 Laplace 方程的 2 维形式,因此可以直接使用 PaddleScience 内置的 `Laplace`,指定该类的参数 `dim` 为 2。

``` py linenums="37"
``` py linenums="105"
--8<--
examples/heat_pinn/heat_pinn.py:37:38
examples/heat_pinn/heat_pinn.py:105:106
--8<--
```

Expand All @@ -98,9 +98,9 @@ examples/heat_pinn/heat_pinn.py:37:38
本文中二维热传导问题作用在以 (-1.0, -1.0), (1.0, 1.0) 为对角线的二维矩形区域,
因此可以直接使用 PaddleScience 内置的空间几何 `Rectangle` 作为计算域。

``` py linenums="40"
``` py linenums="108"
--8<--
examples/heat_pinn/heat_pinn.py:40:41
examples/heat_pinn/heat_pinn.py:108:109
--8<--
```

Expand All @@ -110,19 +110,19 @@ examples/heat_pinn/heat_pinn.py:40:41

在定义约束之前,需要给每一种约束指定采样点个数,表示每一种约束在其对应计算域内采样数据的数量,以及通用的采样配置。

``` py linenums="49"
``` py linenums="117"
--8<--
examples/heat_pinn/heat_pinn.py:49:54
examples/heat_pinn/heat_pinn.py:117:122
--8<--
```

#### 3.4.1 内部点约束

以作用在内部点上的 `InteriorConstraint` 为例,代码如下:

``` py linenums="55"
``` py linenums="123"
--8<--
examples/heat_pinn/heat_pinn.py:55:63
examples/heat_pinn/heat_pinn.py:123:131
--8<--
```

Expand All @@ -146,9 +146,9 @@ examples/heat_pinn/heat_pinn.py:55:63

同理,我们还需要构建矩形的四个边界的约束。但与构建 `InteriorConstraint` 约束不同的是,由于作用区域是边界,因此我们使用 `BoundaryConstraint` 类,代码如下:

``` py linenums="64"
``` py linenums="132"
--8<--
examples/heat_pinn/heat_pinn.py:64:103
examples/heat_pinn/heat_pinn.py:132:171
--8<--
```

Expand All @@ -160,35 +160,29 @@ examples/heat_pinn/heat_pinn.py:64:103

在微分方程约束和边界约束构建完毕之后,以我们刚才的命名为关键字,封装到一个字典中,方便后续访问。

``` py linenums="104"
``` py linenums="172"
--8<--
examples/heat_pinn/heat_pinn.py:104:111
examples/heat_pinn/heat_pinn.py:172:179
--8<--
```

### 3.5 优化器构建

训练过程会调用优化器来更新模型参数,此处选择较为常用的 `Adam` 优化器,并设置学习率为 0.0005。

``` yaml linenums="36"
``` py linenums="181"
--8<--
examples/heat_pinn/conf/heat_pinn.yaml:36:41
--8<--
```

``` py linenums="113"
--8<--
examples/heat_pinn/heat_pinn.py:113:114
examples/heat_pinn/heat_pinn.py:181:182
--8<--
```

### 3.6 模型训练

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

``` py linenums="116"
``` py linenums="184"
--8<--
examples/heat_pinn/heat_pinn.py:116:133
examples/heat_pinn/heat_pinn.py:184:201
--8<--
```

Expand All @@ -197,9 +191,9 @@ examples/heat_pinn/heat_pinn.py:116:133
模型训练完成之后就需要进行与正式 FDM 方法计算出来的结果进行对比,这里我们使用了 `geom["rect"].sample_interior` 采样出测试所需要的坐标数据。
然后,再将采样出来的坐标数据输入到模型中,得到模型的预测结果,最后将预测结果与 FDM 结果进行对比,得到模型的误差。

``` py linenums="135"
``` py linenums="203"
--8<--
examples/heat_pinn/heat_pinn.py:135:209
examples/heat_pinn/heat_pinn.py:203:212
--8<--
```

Expand Down

0 comments on commit 83f6739

Please sign in to comment.