7373
7474上式中 $f$ 即为 MLP 模型本身,用 PaddleScience 代码表示如下
7575
76- ``` py linenums="34 "
76+ ``` py linenums="102 "
7777-- 8 < --
78- examples/ heat_pinn/ heat_pinn.py:34 : 35
78+ examples/ heat_pinn/ heat_pinn.py:102 : 103
7979-- 8 < --
8080```
8181
@@ -87,9 +87,9 @@ examples/heat_pinn/heat_pinn.py:34:35
8787
8888由于二维热传导方程使用的是 Laplace 方程的 2 维形式,因此可以直接使用 PaddleScience 内置的 ` Laplace ` ,指定该类的参数 ` dim ` 为 2。
8989
90- ``` py linenums="37 "
90+ ``` py linenums="105 "
9191-- 8 < --
92- examples/ heat_pinn/ heat_pinn.py:37 : 38
92+ examples/ heat_pinn/ heat_pinn.py:105 : 106
9393-- 8 < --
9494```
9595
@@ -98,9 +98,9 @@ examples/heat_pinn/heat_pinn.py:37:38
9898本文中二维热传导问题作用在以 (-1.0, -1.0), (1.0, 1.0) 为对角线的二维矩形区域,
9999因此可以直接使用 PaddleScience 内置的空间几何 ` Rectangle ` 作为计算域。
100100
101- ``` py linenums="40 "
101+ ``` py linenums="108 "
102102-- 8 < --
103- examples/ heat_pinn/ heat_pinn.py:40 : 41
103+ examples/ heat_pinn/ heat_pinn.py:108 : 109
104104-- 8 < --
105105```
106106
@@ -110,19 +110,19 @@ examples/heat_pinn/heat_pinn.py:40:41
110110
111111在定义约束之前,需要给每一种约束指定采样点个数,表示每一种约束在其对应计算域内采样数据的数量,以及通用的采样配置。
112112
113- ``` py linenums="49 "
113+ ``` py linenums="117 "
114114-- 8 < --
115- examples/ heat_pinn/ heat_pinn.py:49 : 54
115+ examples/ heat_pinn/ heat_pinn.py:117 : 122
116116-- 8 < --
117117```
118118
119119#### 3.4.1 内部点约束
120120
121121以作用在内部点上的 ` InteriorConstraint ` 为例,代码如下:
122122
123- ``` py linenums="55 "
123+ ``` py linenums="123 "
124124-- 8 < --
125- examples/ heat_pinn/ heat_pinn.py:55 : 63
125+ examples/ heat_pinn/ heat_pinn.py:123 : 131
126126-- 8 < --
127127```
128128
@@ -146,9 +146,9 @@ examples/heat_pinn/heat_pinn.py:55:63
146146
147147同理,我们还需要构建矩形的四个边界的约束。但与构建 ` InteriorConstraint ` 约束不同的是,由于作用区域是边界,因此我们使用 ` BoundaryConstraint ` 类,代码如下:
148148
149- ``` py linenums="64 "
149+ ``` py linenums="132 "
150150-- 8 < --
151- examples/ heat_pinn/ heat_pinn.py:64 : 103
151+ examples/ heat_pinn/ heat_pinn.py:132 : 171
152152-- 8 < --
153153```
154154
@@ -160,35 +160,29 @@ examples/heat_pinn/heat_pinn.py:64:103
160160
161161在微分方程约束和边界约束构建完毕之后,以我们刚才的命名为关键字,封装到一个字典中,方便后续访问。
162162
163- ``` py linenums="104 "
163+ ``` py linenums="172 "
164164-- 8 < --
165- examples/ heat_pinn/ heat_pinn.py:104 : 111
165+ examples/ heat_pinn/ heat_pinn.py:172 : 179
166166-- 8 < --
167167```
168168
169169### 3.5 优化器构建
170170
171171训练过程会调用优化器来更新模型参数,此处选择较为常用的 ` Adam ` 优化器,并设置学习率为 0.0005。
172172
173- ``` yaml linenums="36 "
173+ ``` py linenums="181 "
174174-- 8 < --
175- examples/heat_pinn/conf/heat_pinn.yaml:36:41
176- --8<--
177- ```
178-
179- ``` py linenums="113"
180- -- 8 < --
181- examples/ heat_pinn/ heat_pinn.py:113 :114
175+ examples/ heat_pinn/ heat_pinn.py:181 :182
182176-- 8 < --
183177```
184178
185179### 3.6 模型训练
186180
187181完成上述设置之后,只需要将所有上述实例化的对象按顺序传递给 ` ppsci.solver.Solver ` ,然后启动训练。
188182
189- ``` py linenums="116 "
183+ ``` py linenums="184 "
190184-- 8 < --
191- examples/ heat_pinn/ heat_pinn.py:116 : 133
185+ examples/ heat_pinn/ heat_pinn.py:184 : 201
192186-- 8 < --
193187```
194188
@@ -197,9 +191,9 @@ examples/heat_pinn/heat_pinn.py:116:133
197191模型训练完成之后就需要进行与正式 FDM 方法计算出来的结果进行对比,这里我们使用了 ` geom["rect"].sample_interior ` 采样出测试所需要的坐标数据。
198192然后,再将采样出来的坐标数据输入到模型中,得到模型的预测结果,最后将预测结果与 FDM 结果进行对比,得到模型的误差。
199193
200- ``` py linenums="135 "
194+ ``` py linenums="203 "
201195-- 8 < --
202- examples/ heat_pinn/ heat_pinn.py:135 : 209
196+ examples/ heat_pinn/ heat_pinn.py:203 : 212
203197-- 8 < --
204198```
205199
0 commit comments