Hi,

None is equivalent to passing in torch.ones(...) of the proper size

This is only true for an output with a single element!
Otherwise, you can see these outputs as providing dL/dout (where L is your loss) so that the autograd can compute dL/dw (where w are the parameters for which you want the gradients) as dL/dw = dL/dout * dout/dw.
Another way to see this as mentioned in the doc is that autograd only computes a vector matrix product between a vector v and the Jacobian of the function. grad_outputs allow you to specifiy this vector v.