Как получить равномерное распределение в диапазоне [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