The question is basically in the title. I am reading the SWAG implementation (swa_gaussian/swag.py at master · wjmaddox/swa_gaussian · GitHub), and the `sample_fullrank`

function uses gaussian sampling at line 127. The sample vector is defined as:

```
cov_mat_sqrt.new_empty((cov_mat_sqrt.size(0),), requires_grad=False).normal_()
```

It seems like a really convoluted way of making a tensor of size `cov_mat_sqrt.size(0)`

filled with gaussian values.

First I don’t really understand the point of `tensor.new_empty(shape)`

, what’s the difference with `torch.empty(shape)`

? Why call this function on a specific tensor if the new empty tensor is not going to inherit it’s shape?

And if that’s just initializing an empty tensor, is there any functionality difference between this line and a simpler `torch.randn(cov_mat_sqrt.size(0))`

?

I understand that there may be different ways of achieving the same result in PyTorch, I just want to make sure I am not missing any subtle functionality of the implementation used in this codebase.

Thanks in advance to anybody who can clear this up