Как получить равномерное распределение в диапазоне [r1, r2] в PyTorch?

Вопрос говорит все. Я хочу получить двухмерный torch.Tensor с размером [a,b] заполненный значениями из равномерного распределения (в диапазоне [r1,r2]) в PyTorch.

Ответ 1

Если U - случайная величина, равномерно распределенная на [0, 1], то (r1 - r2) * U + r2 равномерно распределена на [r1, r2].

Таким образом, вам просто нужно:

(r1 - r2) * torch.rand(a, b) + r2

Кроме того, вы можете просто использовать:

torch.FloatTensor(a, b).uniform_(r1, r2)

Ответ 2

torch.FloatTensor(a, b).uniform_(r1, r2)

Ответ 3

Пожалуйста, вы можете попробовать что-то вроде:

import torch as pt
pt.empty(2,3).uniform_(5,10).type(pt.FloatTensor)

Ответ 4

Чтобы получить равномерное случайное распределение, вы можете использовать

torch.distributions.uniform.Uniform()

пример,

import torch
from torch.distributions import uniform

distribution = uniform.Uniform(torch.Tensor([0.0]),torch.Tensor([5.0]))
distribution.sample(torch.Size([2,3])

Это даст выходной тензор размера [2, 3].

Ответ 5

Для тех, кто разочарованно избивает свою клавиатуру, кричит "почему это не работает". как я был... обратите внимание на подчеркивание за словом униформа.

torch.FloatTensor(a, b).uniform_(r1, r2)
                               ^ here