未验证 提交 41ba14f3 编写于 作者: U umiswing 提交者: GitHub

Fix test_sparse_norm_op failure. (#55405) (#55637)

test_sparse_norm_op的case在某些cudnn版本中,sparse和dense的batch norm计算结果存在较大diff。同样的结果可以在pytorch中复现,将数据dump之后用cuda api调用cudnn计算也可以复现。可以确认是cudnn版本导致的单测失败。因此暂时在单测中替换测试case,后续等nv有反馈后再对代码做进一步修改。
上级 fc1eac30
......@@ -100,19 +100,23 @@ class TestSparseBatchNorm(unittest.TestCase):
else:
bn = paddle.nn.BatchNorm3D(shape[-1], data_format=data_format)
y = bn(x)
y.backward()
np.random.seed(5)
loss_data = np.random.uniform(-0.01, 0.01, y.shape).astype("float32")
loss = paddle.to_tensor(loss_data)
y.backward(loss)
sp_x = paddle.to_tensor(data).to_sparse_coo(dim - 1)
sp_x.stop_gradient = False
sp_bn = paddle.sparse.nn.BatchNorm(shape[-1], data_format=data_format)
sp_y = sp_bn(sp_x)
sp_y.backward()
sp_loss = loss.to_sparse_coo(dim - 1)
sp_y.backward(sp_loss)
np.testing.assert_allclose(
y.numpy(), sp_y.to_dense().numpy(), rtol=1e-5
sp_y.to_dense().numpy(), y.numpy(), rtol=1e-5
)
np.testing.assert_allclose(
x.grad.numpy(), sp_x.grad.to_dense().numpy(), rtol=1e-5
sp_x.grad.to_dense().numpy(), x.grad.numpy(), rtol=1e-5
)
def test_nd(self):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册