Pytorch:如何创建一个随机整数张量,其中某个百分比是某个值?例如,25%为1,其余为0

时间:2020-11-06 20:40:56

标签: pytorch

在pytorch中,我可以创建一个随机的零和一张量,每个张量的分布约为%50

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

我想知道如何制作张量,其中只有25%的值为1,其余为零?

2 个答案:

答案 0 :(得分:2)

在这里回答我:How to randomly set a fixed number of elements in each row of a tensor in 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))

答案 1 :(得分:2)

您可以使用rand0,1之间生成随机张量,并将其与0.25进行比较:

(torch.rand(size=(2,5)) < 0.25).int()

输出:

tensor([[0, 0, 0, 0, 1],
        [1, 0, 0, 0, 0]], dtype=torch.int32)