I'm confused as to why there are double parantheses instead of just torch.randn(1,5).
Is torch.randn(1,5) the same thing as torch.randn((1,5))?
Best Answer
You should check the definition of this function here.
size (int...) – a sequence of integers defining the shape of the output tensor. Can be a variable number of arguments or a collection like a list or tuple.
>>> import torch>>> a = torch.randn(1,5)>>> b = torch.randn((1,5))>>> a.shape == b.shapeTrueTherefore, you can use either a or b since they have the same shape.
You can use both variants: (1, 2) and 1, 2. Because of python asterisk magics:
torch.randn(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensorthe first *size captures all positional arguments passed to the function, when passing 1, 2 function will pack it to (1, 2).
the second * turns any parameters that follow it to be keyword-only parameters, to avoid situations like this: randn(1, 2 None, torch.strided, "cuda", True), forcing you to randn(1, 2, out=None, dtype=None, layout=torch.strided, device="cuda", requires_grad=True)