Pytorch:如何创建一个随机的intTensor,其中一定的百分比是一定的值?例如,25%是1,其余是0

plicqrtu  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(126)

在pytorch中,我可以创建一个随机的0和1Tensor,每个Tensor的分布大约为50

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

字符串
我想知道我如何才能使一个Tensor中只有25%的值是1,其余的是0?

beq87vna

beq87vna1#

可以使用rand0,1之间生成一个随机Tensor,并将其与0.25进行比较:

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

字符串
输出量:

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

sh7euo9m

sh7euo9m2#

以下是我的回答:如何在PyTorch中随机设置Tensor每行中固定数量的元素
假设你想要一个维度为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))

字符串

相关问题