Multivariate uniform distribution in pytorch?

Hi, all.

I’m tying to implement multivariate uniform distribution.

x = torch.FloatTensor([[3,6]]).to(dtype=torch.float32)
lower_bound = torch.FloatTensor([[0,1]]).to(dtype=torch.float32)
upper_bound = torch.FloatTensor([[3,3]]).to(dtype=torch.float32)
x_init = x.new_empty((1,2)).uniform_(lower_bound, upper_bound)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-d3abb0ac3983> in <module>
      2 lower_bound = torch.FloatTensor([[0,1]]).to(dtype=torch.float32)
      3 upper_bound = torch.FloatTensor([[3,3]]).to(dtype=torch.float32)
----> 4 x_init = x.new_empty((1,2)).uniform_(lower_bound, upper_bound)

TypeError: uniform_(): argument 'from' (position 1) must be float, not Tensor

I checked source code for torch.distributions.uniform,(https://pytorch.org/docs/stable/_modules/torch/distributions/uniform.html )
but I have no idea how to implement multidimensional lower and upper bound.
Any ideas or examples are welcome.
Thanks for reading.

I guess you could do something like:

x = torch.FloatTensor([[3,6]]).to(dtype=torch.float32) # contains numbers from U(0,1)
res = (upper_bound - lower_bound) * x + lower_bound

This way, res will contain numbers from the desired distribution (provided elements DO NOT interact between them), i.e. res_i \sim U(lower_bound_i, upper_bound_i).

Is this what you are looking for ?