webentwicklung-frage-antwort-db.com.de

Wie erhält man eine gleichmäßige Verteilung in einem Bereich [r1, r2] in PyTorch?

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.

15

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)
22
BiBi
torch.FloatTensor(a, b).uniform_(r1, r2)
12
rafaelvalle

Bitte können Sie etwas versuchen wie:

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

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
0
Joshua Clancy

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].

0
Pratik_Katte