Die Frage sagt alles. Ich möchte ein 2-D torch.Tensor
mit Größe [a,b]
gefüllt mit Werten aus einer Gleichverteilung (im Bereich [r1,r2]
) in PyTorch.
Wenn U
eine Zufallsvariable ist, die gleichmäßig auf [0, 1] verteilt ist, dann (r1 - r2) * U + r2
ist gleichmäßig auf [r1, r2] verteilt.
Sie brauchen also nur:
(r1 - r2) * torch.Rand(a, b) + r2
Alternativ können Sie einfach verwenden:
torch.FloatTensor(a, b).uniform_(r1, r2)
torch.FloatTensor(a, b).uniform_(r1, r2)
Bitte können Sie etwas versuchen wie:
import torch as pt
pt.empty(2,3).uniform_(5,10).type(pt.FloatTensor)
Für diejenigen, die frustrierend ihre Tastatur drücken und schreien: "Warum funktioniert das nicht?" wie ich war ... beachte den Unterstrich hinter der Wortuniform.
torch.FloatTensor(a, b).uniform_(r1, r2)
^ here
Um eine gleichmäßige Zufallsverteilung zu erhalten, können Sie verwenden
torch.distributions.uniform.Uniform()
beispiel,
import torch
from torch.distributions import uniform
distribution = uniform.Uniform(torch.Tensor([0.0]),torch.Tensor([5.0]))
distribution.sample(torch.Size([2,3])
Dies ergibt den Ausgangstensor der Größe [2, 3].