Paddle OP单测的_assert_is_close处理是否有问题?

uqxowvwt  于 2022-10-20  发布在  其他
关注(0)|答案(1)|浏览(166)

Paddle/python/paddle/fluid/tests/unittests/op_test.py

Line 518 in 7330cd6

| | abs_a[abs_a<1e-3] =1 |

OP单测中grad的检测函数 _assert_is_close 中,对判断相对误差的分母 abs_a 做了小于 1e-3 时置为1的处理。

由于op单测默认在op后添加mean loss,所以单测中output_grad tensor的梯度数值均为 1/output_size , output_size 是OP output的元素个数,当 output_size 较大时(比如>1000), output_grad 的梯度数值会很小,计算出 input_grad 的数值也会很小,就会走到上述 abs_a<1e-3 的逻辑,分母被置为1,这时 input_grad 即使有较大diff也无法检测出来

1sbrub3j

1sbrub3j1#

我理解此处是否应该修改为 abs_a[abs_a < 1e-3] = 1e-3

相关问题