gpt4 book ai didi

pytorch - PyTorch 如何在张量的每一行中随机设置固定数量的元素

转载 作者:行者123 更新时间:2023-12-04 08:49:10 30 4
gpt4 key购买 nike

我想知道如果不在第 4 行中使用“for”循环,下面的代码是否有更有效的替代方案?

import torch
n, d = 37700, 7842
k = 4
sample = torch.cat([torch.randperm(d)[:k] for _ in range(n)]).view(n, k)
mask = torch.zeros(n, d, dtype=torch.bool)
mask.scatter_(dim=1, index=sample, value=True)

基本上,我想做的是通过 d 掩码张量创建一个 n,这样在每一行中恰好 k 随机元素为真。

最佳答案

这是一种无需循环即可执行此操作的方法。让我们从一个随机矩阵开始,其中所有元素都是 iid 绘制的,在这种情况下均匀地绘制在 [0,1] 上。然后我们为每行取第 k 个分位数,并将每行中所有较小或相等的元素设置为 True,其余元素设置为 False:

rand_mat = torch.rand(n, d)
k_th_quant = torch.topk(rand_mat, k, largest = False)[0][:,-1:]
mask = rand_mat <= k_th_quant

不需要循环 :) 比你在我的 CPU 上附加的代码快 x2.1598。

关于pytorch - PyTorch 如何在张量的每一行中随机设置固定数量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64162672/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com