I cannot reproduce the issue using your code snippet and get a valid gradient:
model = NoiseInjection()
x = torch.randn(16, 3, 24, 24)
out = model(x)
out.mean().backward()
print(model.weight.grad)
> tensor([0.0115])