train_cn.md 14.0 KB
Newer Older
D
dingjiaweiww 已提交
1
# 框架类FAQ
A
adaxi123 已提交
2

R
RaindragonD 已提交
3

D
dingjiaweiww 已提交
4
## 数据处理
R
RaindragonD 已提交
5

D
dingjiaweiww 已提交
6
##### 问题:如何处理图片小但数量很大的数据集?
R
RaindragonD 已提交
7

D
dingjiaweiww 已提交
8
+ 答复:`multiprocess_reader`可以解决该问题,具体可参考[Github示例](https://github.com/PaddlePaddle/Paddle/issues/16592)
R
RaindragonD 已提交
9

D
dingjiaweiww 已提交
10
----------
R
RaindragonD 已提交
11

D
dingjiaweiww 已提交
12
##### 问题:使用`py_reader`读取数据时,如何给变量命名?
R
RaindragonD 已提交
13

D
dingjiaweiww 已提交
14
+ 答复:可以通过设置里面的name变量。具体方法请参考飞桨[create_py_reader_by_data](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.3/api_cn/layers_cn.html#create-py-reader-by-data) API。
A
adaxi123 已提交
15

D
dingjiaweiww 已提交
16
----------
R
RaindragonD 已提交
17

D
dingjiaweiww 已提交
18
##### 问题:使用多卡或多GPU进行数据并行时,如何设置异步数据读取?
R
RaindragonD 已提交
19

D
dingjiaweiww 已提交
20
+ 答复:使用多卡或多GPU进行数据并行时,需要设置:`places = fluid.cuda_places() if USE_CUDA else fluid.cpu_places(CPU_NUM)`,具体内容可以参考文档:[异步数据读取](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/howto/prepare_data/use_py_reader.html)
R
RaindragonD 已提交
21

D
dingjiaweiww 已提交
22
----------
R
RaindragonD 已提交
23

D
dingjiaweiww 已提交
24
##### 问题:使用`paddle.dataset.mnist.train()`获得数据后,如何转换为可操作的Tensor?
A
adaxi123 已提交
25

D
dingjiaweiww 已提交
26
+ 答复:执行`fluid.dygraph.to_varibale()`,将data数据转化为可以操作的动态图Tensor。
R
RaindragonD 已提交
27

D
dingjiaweiww 已提交
28
----------
R
RaindragonD 已提交
29

D
dingjiaweiww 已提交
30
##### 问题:如何给图片添加一个通道数,并进行训练?
R
RaindragonD 已提交
31

D
dingjiaweiww 已提交
32
+ 答复:执行`np.expand_dims`增加维度后再reshape。如果需要通道合并,可以执行`fluid.layers.concat()`
R
RaindragonD 已提交
33

D
dingjiaweiww 已提交
34
----------
A
adaxi123 已提交
35

D
dingjiaweiww 已提交
36
##### 问题:`paddle.fluid.layers.py_reader`和`fluid.io.PyReader`有什么区别?
R
RaindragonD 已提交
37

D
dingjiaweiww 已提交
38
+ 答复:两个都是异步的。推荐使用`fluid.io.PyReader`
R
RaindragonD 已提交
39

D
dingjiaweiww 已提交
40
----------
R
RaindragonD 已提交
41

D
dingjiaweiww 已提交
42
##### 问题:有拓展Tensor维度的Op吗?
A
adaxi123 已提交
43

D
dingjiaweiww 已提交
44
+ 答复:有的,操作方法请参考[unsqueeze op](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/unsqueeze_cn.html)
A
adaxi123 已提交
45

D
dingjiaweiww 已提交
46
----------
R
RaindragonD 已提交
47

D
dingjiaweiww 已提交
48
##### 问题:是否支持两维以上的变长tensor,如:shape[-1, -1, 128]?
R
RaindragonD 已提交
49

D
dingjiaweiww 已提交
50
+ 答复:配置网络时`shape`可以设置为:[-1,*任意整数*,128],输入时`shape`可以设置为:[*任意整数,**任意整数*,128]。维度只是个占位,网络运行时的实际维度是从输入数据中推导出来的。两个"任意整数" 在输入和配置时可以不相等,但是配置网络时,第一维度必须为-1。
R
RaindragonD 已提交
51

D
dingjiaweiww 已提交
52
----------
R
RaindragonD 已提交
53

D
dingjiaweiww 已提交
54
##### 问题:如何从np.array生成一个具有Shape和DType的Tensor?
R
RaindragonD 已提交
55

D
dingjiaweiww 已提交
56
+ 答复:具体方法可参考文档 [LoD-Tensor使用说明]( https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/howto/basic_concept/lod_tensor.html)
R
RaindragonD 已提交
57

D
dingjiaweiww 已提交
58
----------
R
RaindragonD 已提交
59

D
dingjiaweiww 已提交
60
##### 问题:如何初始化一个随机数的Tensor?
R
RaindragonD 已提交
61

D
dingjiaweiww 已提交
62
+ 答复:
R
RaindragonD 已提交
63 64 65



D
dingjiaweiww 已提交
66
  ta = fluid.create_lod_tensor(np.random.randn(10, 5), [], fluid.CPUPlace())
R
RaindragonD 已提交
67

D
dingjiaweiww 已提交
68
  tb = fluid.create_lod_tensor(np.ones([5, 10]), [], place)
R
RaindragonD 已提交
69

D
dingjiaweiww 已提交
70
  print(np.array(ta))
R
RaindragonD 已提交
71

D
dingjiaweiww 已提交
72
  print(np.array(tb))
R
RaindragonD 已提交
73 74 75



D
dingjiaweiww 已提交
76
## 模型搭建
R
RaindragonD 已提交
77

D
dingjiaweiww 已提交
78
##### 问题:如何不训练某层的权重?
R
RaindragonD 已提交
79

D
dingjiaweiww 已提交
80
+ 答复:在`ParamAttr`里设置learning_rate=0。
R
RaindragonD 已提交
81

D
dingjiaweiww 已提交
82
----------
R
RaindragonD 已提交
83

D
dingjiaweiww 已提交
84
##### 问题:`stop_gradient=True`的影响范围?
A
adaxi123 已提交
85

D
dingjiaweiww 已提交
86
+ 答复:如果fluid里某一层使用`stop_gradient=True`,那么这一层之前的层都会自动 `stop_gradient=True`,梯度不再回传。
C
chengduo 已提交
87

D
dingjiaweiww 已提交
88
----------
C
chengduo 已提交
89

D
dingjiaweiww 已提交
90
##### 问题:请问`fluid.layers.matmul`和`fluid.layers.mul`有什么区别?
C
chengduo 已提交
91

D
dingjiaweiww 已提交
92
+ 答复:`matmul`支持broadcast和任意阶相乘。`mul`会把输入都转成两维去做矩阵乘。
C
chengduo 已提交
93

D
dingjiaweiww 已提交
94
----------
C
chengduo 已提交
95

R
RaindragonD 已提交
96 97


D
dingjiaweiww 已提交
98
## 模型训练&评估
R
RaindragonD 已提交
99

D
dingjiaweiww 已提交
100
##### 问题:在CPU上进行模型训练,如何使用多线程?
R
RaindragonD 已提交
101

D
dingjiaweiww 已提交
102
+ 答复:可以参考使用[ParallelExecutor API](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.3/api_cn/fluid_cn.html#parallelexecutor)
R
RaindragonD 已提交
103

D
dingjiaweiww 已提交
104
----------
R
RaindragonD 已提交
105

D
dingjiaweiww 已提交
106
##### 问题:如何提高单CPU多线程利用率?
R
RaindragonD 已提交
107

D
dingjiaweiww 已提交
108
+ 答复:线程数是设备同时并行执行程序的个数,可以将线程数设置为“CPU的个数*CPU的核数”。可以通过
A
adaxi123 已提交
109

D
dingjiaweiww 已提交
110
`os.getenv("CPU_NUM")`或者`os.environ['CPU_NUM'] = str(2)`获取相关参数值。
R
RaindragonD 已提交
111

D
dingjiaweiww 已提交
112
----------
R
RaindragonD 已提交
113

D
dingjiaweiww 已提交
114
##### 问题:使用NVIDIA多卡运行Paddle时报错,`Error:NCCL ContextMap`或者`Error:hang住`(log日志打印突然卡住),如何解决?
R
RaindragonD 已提交
115

D
dingjiaweiww 已提交
116
+ 答复:参考[NCCL Tests](https://github.com/NVIDIA/nccl-tests)检测您的环境。如果检测不通过,请登录[NCCL官网](https://developer.nvidia.com/zh-cn)下载NCCl,安装后重新检测。
R
RaindragonD 已提交
117

D
dingjiaweiww 已提交
118
----------
R
RaindragonD 已提交
119

D
dingjiaweiww 已提交
120
##### 问题:多卡训练时启动失败,`Error:Out of all 4 Trainers`,如何处理?
R
RaindragonD 已提交
121

D
dingjiaweiww 已提交
122
+ 问题描述:多卡训练时启动失败,显示如下信息:
R
RaindragonD 已提交
123

D
dingjiaweiww 已提交
124
![图片](https://agroup-bos-bj.cdn.bcebos.com/bj-13d1b5df218cb40b0243d13450ab667f34aee2f7)
R
RaindragonD 已提交
125

D
dingjiaweiww 已提交
126
+ 报错分析:PaddlePaddle安装版本和多卡训练不匹配导致。
R
RaindragonD 已提交
127

D
dingjiaweiww 已提交
128
+ 解决方法:排查当前安装的PaddlePaddle是否支持并行训练。如果是开发者编译的Paddle,请在编译时打开 `WITH_DISTRIBUTE`选项。
R
RaindragonD 已提交
129

D
dingjiaweiww 已提交
130
----------
R
RaindragonD 已提交
131

D
dingjiaweiww 已提交
132
##### 问题:训练过程中提示显存不足,如何处理?
R
RaindragonD 已提交
133

D
dingjiaweiww 已提交
134
+ 答复:这是一种常见情况,你可以尝试调整`batch_size`大小,也可以更改网络模型,或者参考官方文档[显存分配与优化](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/advanced_usage/best_practice/memory_optimize.html) 。建议用户使用[AI Studio 学习与 实训社区训练](https://aistudio.baidu.com/aistudio/index),获取免费GPU算力,速度更快。
R
RaindragonD 已提交
135

D
dingjiaweiww 已提交
136
----------
R
RaindragonD 已提交
137

D
dingjiaweiww 已提交
138
##### 问题:GPU显存占用过高,如何解决?
R
RaindragonD 已提交
139

D
dingjiaweiww 已提交
140
+ 答复:建议调整 `FLAGS_fraction_of_gpu_memory_to_use` ,并检查`batch_size` 。通过设置较小的`batch_size`能降低显存消耗;`FLAGS_fraction_of_gpu_memory_to_use`默认值为 =0.92, 当申请不到需要的显存时会直接报内存不足。如遇到此情况,可以先检查一下GPU卡是否被占用,再设置较小的值,以启动程序。
R
RaindragonD 已提交
141

D
dingjiaweiww 已提交
142
----------
R
RaindragonD 已提交
143

D
dingjiaweiww 已提交
144
##### 问题:GPU内存不足,报错 `Error:Out of memory error GPU`,如何处理?
R
RaindragonD 已提交
145

D
dingjiaweiww 已提交
146
+ 问题描述:
A
adaxi123 已提交
147

D
dingjiaweiww 已提交
148
![图片](https://agroup-bos-bj.cdn.bcebos.com/bj-3cbc8370534cb998f321af9b32aa2859403d9c9d)
A
adaxi123 已提交
149

D
dingjiaweiww 已提交
150
+ 解决方案:
R
RaindragonD 已提交
151

D
dingjiaweiww 已提交
152 153 154 155 156 157 158 159
  1. 检查是当前模型是否占用内存过高,可尝试减小`batch_size`
  2. 开启以下三个选项:
     `#一旦不再使用即释放内存垃圾,=1.0 垃圾占用内存大小达到10G时,释放内存垃圾`
     `export FLAGS_eager_delete_tensor_gb=0.0`
     `#启用快速垃圾回收策略,不等待cuda kernel 结束,直接释放显存`
     `export FLAGS_fast_eager_deletion_mode=1`
     `#该环境变量设置只占用0%的显存`
     `export FLAGS_fraction_of_gpu_memory_to_use=0`
R
RaindragonD 已提交
160

D
dingjiaweiww 已提交
161
----------
R
RaindragonD 已提交
162

D
dingjiaweiww 已提交
163
##### 问题:如何提升模型训练时的GPU利用率?
X
xsrobin 已提交
164

D
dingjiaweiww 已提交
165
+ 答复:有如下两点建议:
X
xsrobin 已提交
166

D
dingjiaweiww 已提交
167
  1. 如果数据预处理耗时较长,可使用py_Reader 或 multiprocess_reader加速;
X
xsrobin 已提交
168

D
dingjiaweiww 已提交
169
  2. 如果提高GPU计算量,可以增加`batch_size`,但是注意调节其他超参数。
X
xsrobin 已提交
170

D
dingjiaweiww 已提交
171
  以上两点均为比较通用的方案,其他的优化方案和模型相关,可参考相应models示例。
X
xsrobin 已提交
172

D
dingjiaweiww 已提交
173
----------
A
adaxiadaxi 已提交
174

D
dingjiaweiww 已提交
175
##### 问题:使用CPU或GPU时,如何设置`num_threds`?
A
adaxiadaxi 已提交
176

D
dingjiaweiww 已提交
177
+ 答复:
A
adaxiadaxi 已提交
178

D
dingjiaweiww 已提交
179 180
  1. 如果是CPU,最大可以设置到当前CPU的内核数。
  2. 如果是GPU,受显卡多处理器的寄存器数目限制,例如GeForce 8800GT的显卡,最多8192个寄存器。假设每个线程需要的寄存器等于16,则最多只有512个线程。再高的线程将会将数据切换的显卡显存,反而降低执行效率。
A
adaxiadaxi 已提交
181

D
dingjiaweiww 已提交
182
----------
183

D
dingjiaweiww 已提交
184
##### 问题:如何处理变长ID导致程序内存占用过大的问题?
X
xsrobin 已提交
185

D
dingjiaweiww 已提交
186
+ 答复:请先参考[显存分配与优化文档](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/advanced_usage/best_practice/memory_optimize.html) 开启存储优化开关,包括显存垃圾及时回收和Op内部的输出复用输入等。若存储空间仍然不够,建议:
X
xsrobin 已提交
187

D
dingjiaweiww 已提交
188 189
  1. 降低`batch_size`
  2. 对index进行排序,减少padding的数量。
X
xsrobin 已提交
190

D
dingjiaweiww 已提交
191
----------
X
xsrobin 已提交
192

D
dingjiaweiww 已提交
193
##### 问题:Executor与ParallelExecutor有什么区别?
X
xsrobin 已提交
194

D
dingjiaweiww 已提交
195
+ 答复:如果没有指定Scope,所有的Executor都会共享一个Scope,即`global_scope`
R
RaindragonD 已提交
196

D
dingjiaweiww 已提交
197
1. `fluid.Executor`执行对象是Program,可以认为是一个轻量级的执行器,目前主要用于参数初始化、参数加载、参数模型保存。
R
RaindragonD 已提交
198

D
dingjiaweiww 已提交
199
2. `fluid.ParallelExecutor`的执行对象是Graph,ParallelExecutor内部会将Program转为Graph,这样更便于对模型进行分析。
R
RaindragonD 已提交
200

D
dingjiaweiww 已提交
201
----------
A
adaxi123 已提交
202

D
dingjiaweiww 已提交
203
##### 问题:训练过程中如果出现不收敛的情况,如何处理?
R
RaindragonD 已提交
204

D
dingjiaweiww 已提交
205
+ 答复:不收敛的原因有很多,可以参考如下方式排查:
R
RaindragonD 已提交
206

D
dingjiaweiww 已提交
207 208 209 210 211 212 213
  1. 检查数据集中训练数据的准确率,数据是否有很多错误,特征是否归一化;
  2. 简化网络结构,先基于benchmark实验,确保在baseline网络结构和数据集上的收敛结果正确;
  3. 对于复杂的网络,每次只增加一个改动,确保改动后的网络正确;
  4. 检查网络在训练数据上的Loss是否下降;
  5. 检查学习率、优化算法是否合适,学习率过大会导致不收敛;
  6. 检查`batch_size`设置是否合适,`batch_size`过小会导致不收敛;
  7. 检查梯度计算是否正确,是否有梯度过大的情况,是否为NaN。
R
RaindragonD 已提交
214

D
dingjiaweiww 已提交
215
----------
A
adaxi123 已提交
216

D
dingjiaweiww 已提交
217
##### 问题:Loss为NaN,如何处理?
A
adaxi123 已提交
218

D
dingjiaweiww 已提交
219
+ 答复:可能由于网络的设计问题,Loss过大(Loss为NaN)会导致梯度爆炸。如果没有改网络结构,但是出现了NaN,可能是数据读取导致,比如标签对应关系错误。
R
RaindragonD 已提交
220

D
dingjiaweiww 已提交
221
----------
R
RaindragonD 已提交
222

D
dingjiaweiww 已提交
223
##### 问题:在AI Studio上使用GPU训练时报错 `Attempt to use GPU for prediction, but environment variable CUDA_VISIBLE_DEVICES was not set correctly.`,如何处理?
R
RaindragonD 已提交
224

D
dingjiaweiww 已提交
225
+ 答复:需要在Notebook环境中增加:`%set_env CUDA_VISIBLE_DEVICES=0`
A
adaxi123 已提交
226

D
dingjiaweiww 已提交
227
----------
A
adaxi123 已提交
228

D
dingjiaweiww 已提交
229
##### 问题:使用GPU训练时报错,`Error:incompatible constructor arguments.`,如何处理?
R
RaindragonD 已提交
230

D
dingjiaweiww 已提交
231 232
+ 问题描述:
  ![图片](https://agroup-bos-bj.cdn.bcebos.com/bj-3779aa5b33dbe1f05ba2bfeabb2d22d4270d1929)
R
RaindragonD 已提交
233

D
dingjiaweiww 已提交
234
+ 报错分析:`CUDAPlace()`接口没有指定GPU的ID编号导致。
R
RaindragonD 已提交
235

D
dingjiaweiww 已提交
236
+ 答复:CUDAPlace()接口需要指定GPU的ID编号,接口使用方法参见:[paddle.fluid.CUDAPlace](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/fluid_cn/CUDAPlace_cn.html)
R
RaindragonD 已提交
237

D
dingjiaweiww 已提交
238
----------
R
RaindragonD 已提交
239

D
dingjiaweiww 已提交
240
##### 问题:增量训练中,如何保存模型和恢复训练?
A
adaxi123 已提交
241

D
dingjiaweiww 已提交
242
+ 答复:在增量训练过程中,不仅需要保存模型的参数,也需要保存模型训练的状态(如learning_rate)。使用[save_persistables](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/api_cn/dygraph_cn.html#save-persistables)保存模型训练的参数和状态;恢复训练时,使用[load_persistables](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/api_cn/dygraph_cn.html#load-persistables)进行恢复训练。
A
adaxi123 已提交
243

D
dingjiaweiww 已提交
244
----------
R
RaindragonD 已提交
245

D
dingjiaweiww 已提交
246
##### 问题:训练后的模型很大,如何压缩?
R
RaindragonD 已提交
247

D
dingjiaweiww 已提交
248
+ 答复:建议您使用飞桨模型压缩工具[PaddleSlim](https://www.paddlepaddle.org.cn/tutorials/projectdetail/489539)。PaddleSlim是飞桨开源的模型压缩工具库,包含模型剪裁、定点量化、知识蒸馏、超参搜索和模型结构搜索等一系列模型压缩策略,专注于**模型小型化技术**
R
RaindragonD 已提交
249

D
dingjiaweiww 已提交
250
----------
R
RaindragonD 已提交
251

A
adaxi123 已提交
252

R
RaindragonD 已提交
253

D
dingjiaweiww 已提交
254
## 应用预测
R
RaindragonD 已提交
255

D
dingjiaweiww 已提交
256
##### 问题:load_inference_model在加载预测模型时能否用py_reader读取?
R
RaindragonD 已提交
257

D
dingjiaweiww 已提交
258
+ 答复:目前`load_inference_model`加载进行的模型还不支持py_reader输入。
R
RaindragonD 已提交
259

D
dingjiaweiww 已提交
260
----------
R
RaindragonD 已提交
261

A
adaxi123 已提交
262

R
RaindragonD 已提交
263

D
dingjiaweiww 已提交
264
## 参数调整
R
RaindragonD 已提交
265

D
dingjiaweiww 已提交
266
##### 问题:如何将本地数据传入`fluid.dygraph.Embedding`的参数矩阵中?
A
adaxi123 已提交
267

D
dingjiaweiww 已提交
268
+ 答复:需将本地词典向量读取为NumPy数据格式,然后使用`fluid.initializer.NumpyArrayInitializer`这个op初始化`fluid.dygraph.Embedding`里的`param_attr`参数,即可实现加载用户自定义(或预训练)的Embedding向量。
A
adaxi123 已提交
269

D
dingjiaweiww 已提交
270
------
A
adaxi123 已提交
271

D
dingjiaweiww 已提交
272
##### 问题:如何实现网络层中多个feature间共享该层的向量权重?
A
adaxi123 已提交
273

D
dingjiaweiww 已提交
274
+ 答复:将所有网络层中`param_attr`参数里的`name`设置为同一个,即可实现共享向量权重。如使用embedding层时,可以设置`param_attr=fluid.ParamAttr(name="word_embedding")`,然后把param_attr传入embedding中。
A
adaxi123 已提交
275

D
dingjiaweiww 已提交
276
----------
A
adaxi123 已提交
277

D
dingjiaweiww 已提交
278
##### 问题:如何修改全连接层参数,如:weights、bias、optimizer.SGD?
A
adaxi123 已提交
279

D
dingjiaweiww 已提交
280
+ 答复:可以通过`param_attr`设置参数的属性,`fluid.ParamAttr( initializer=fluid.initializer.Normal(0.0, 0.02), learning_rate=2.0)`,如果`learning_rate`设置为0,该层就不参与训练。手动输入参数也可以实现,但是会比较麻烦。
A
adaxi123 已提交
281

D
dingjiaweiww 已提交
282
----------
A
adaxi123 已提交
283

D
dingjiaweiww 已提交
284
##### 问题:使用optimizer或ParamAttr设置的正则化和学习率,二者什么差异?
A
adaxi123 已提交
285

D
dingjiaweiww 已提交
286
+ 答复:ParamAttr中定义的`regularizer`优先级更高。若ParamAttr中定义了`regularizer`,则忽略Optimizer中的`regularizer`;否则,则使用Optimizer中的`regularizer`。学习率的设置也可以参考此方式。
R
RaindragonD 已提交
287

D
dingjiaweiww 已提交
288
----------
R
RaindragonD 已提交
289

D
dingjiaweiww 已提交
290
##### 问题:如何导出指定层的权重,如导出最后一层的*weights*和*bias*?
R
RaindragonD 已提交
291

D
dingjiaweiww 已提交
292
+ 答复:使用`save_vars`保存指定的vars,然后使用`load_vars`加载对应层的参数值。具体示例请见API文档:[load_vars](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/io_cn/load_vars_cn.html#load-vars)[save_vars](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/io_cn/save_vars_cn.html#save-vars)
A
adaxi123 已提交
293

D
dingjiaweiww 已提交
294
----------
R
RaindragonD 已提交
295

D
dingjiaweiww 已提交
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318
##### 问题:训练过程中如何固定网络和Batch Normalization(BN)?

+ 答复:

1. 对于固定BN:设置 `use_global_stats=True`,使用已加载的全局均值和方差:`global mean/variance`,具体内容可查看官网文档[BatchNorm](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn/BatchNorm_cn.html)

2. 对于固定网络层:如: stage1→ stage2 → stage3 ,设置stage2的输出,假设为*y*,设置 `y.stop_gradient=True`,那么, stage1→ stage2整体都固定了,不再更新。

----------

##### 问题:优化器设置时报错`AttributeError: parameter_list argument given to the Optimizer should not be None in dygraph mode.`,如何处理?

+ 错误分析:必选参数缺失导致。

+ 答复:飞桨1.7版本之后需要在optimizer的设置中加入必选项`param_list`

----------

##### 问题:`fluid.layer.pool2d`的全局池化参数和设置参数有关系么?

+ 答复:如果设置`global_pooling`,则设置的`pool_size`将忽略,不会产生影响。

----------