1. ホーム
  2. pytorch

[解決済み] Pytorch ある割合で特定の値を持つランダムなint型テンソルを作成する方法は?例えば、25%が1で残りが0というような。

2022-02-17 11:52:08

質問

pytorchでは、0と1のテンソルをそれぞれ50%程度の分布でランダムに作成することができます。

import torch 
torch.randint(low=0, high=2, size=(2, 5))

25%だけが1で、残りは0というテンソルを作るにはどうしたらいいでしょうか?

どのように解決するのですか?

私の回答はこちらです。 PyTorchでテンソルの各行に固定数の要素をランダムに設定する方法

次元の行列が必要だとします。 n X d ここで まさに 各行の値の25%が1で、残りが0である。 desired_tensor を実行すると、望みの結果が得られます。

n = 2
d = 5
rand_mat = torch.rand(n, d)
k = round(0.25 * d) # For the general case change 0.25 to the percentage you need
k_th_quant = torch.topk(rand_mat, k, largest = False)[0][:,-1:]
bool_tensor = rand_mat <= k_th_quant
desired_tensor = torch.where(bool_tensor,torch.tensor(1),torch.tensor(0))