-
Notifications
You must be signed in to change notification settings - Fork 5.6k
It's recommend to set no_grad_set to be None
Tao Luo edited this page Aug 15, 2020
·
4 revisions
It's recommend to set no_grad_set to be None (English Version)
规范概要:
- 第1节,本规范说明
- 第2节,本规范检查内容
- 第3节,CI检查内容
- 第4节,未通过检查的修改建议
补充说明:
- 规范在执行过程中,可能会发现现有规范未考虑到的方面,需要在实施过程中不断补充与完善,也请大家积极反馈意见。
如果在跑单测的时候,发现有个变量的反向出错了,且把这个变量加到no_grad_set里面,则单测就不会做检查,也就不会发现此错误。
因此,为了规范no_grad_set值的使用,提出了no_grad_set值建议为None的规范,在OpTest中添加了相应检测方法,在CI中添加了对本规范白名单的检查。
OP单测中需要满足条件:
* 单测的测试用例中的no_grad_set原则上为None
* 将所有输入赋值给no_grad_set,这是绝对不行的
-
背景:对于待修复的OP,加入本规范的待修复白名单,跳过检查。白名单路径: python/paddle/fluid/tests/unittests/white_list/no_grad_set_white_list.py
-
CI中增加对白名单的检查,如果需要修改,请联系特定人员审核。
-
错误示例:
python/paddle/fluid/tests/unittests/sequence/test_sequence_conv.py
中,将所有输入赋值X
和Filter
都给no_grad_set,这是不可取的(详见PR22571)。
self.inputs = {
'X': (x, self.lod),
'Filter': w,
}
def test_check_grad_padding_data(self):
if self.padding_trainable:
self.check_grad(
['PaddingData'], 'Out', no_grad_set=set(['X', 'Filter']))
- 请将no_grad_set设置为None。
- 必须设置no_grad_set值,请联系特定人员审核。如果同意,可以该单测放入NO_CHECK_LIST中,跳过no_grad_set检查。
- 若遇到其他问题,请联系@chenjiaoAngel。