web-dev-qa-db-fra.com

Comment obtenir une distribution uniforme dans une plage [r1, r2] dans PyTorch?

La question dit tout. Je veux obtenir un 2-D torch.Tensor avec la taille [a,b] rempli de valeurs provenant d'une distribution uniforme (dans la plage [r1,r2]) dans PyTorch.

15

Si U est une variable aléatoire uniformément répartie sur [0, 1], alors (r1 - r2) * U + r2 est uniformément distribué sur [r1, r2].

Ainsi, vous avez juste besoin de:

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

Alternativement, vous pouvez simplement utiliser:

torch.FloatTensor(a, b).uniform_(r1, r2)
22
BiBi
torch.FloatTensor(a, b).uniform_(r1, r2)
12
rafaelvalle

Pouvez-vous essayer quelque chose comme:

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

Pour ceux qui dénigrent avec frustration leur clavier en criant "pourquoi cela ne fonctionne-t-il pas?" comme j'étais ... notez le soulignement derrière l'uniforme de Word.

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

Pour obtenir une distribution aléatoire uniforme, vous pouvez utiliser

torch.distributions.uniform.Uniform()

exemple,

import torch
from torch.distributions import uniform

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

Cela donnera la sortie, tenseur de taille [2, 3].

0
Pratik_Katte