我有一张图片张量,想从中随机选择。我正在寻找 np.random.choice()
的等价物。
import torch
pictures = torch.randint(0, 256, (1000, 28, 28, 3))
假设我想要其中的 10 张图片。
原文由 Nicolas Gervais 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一张图片张量,想从中随机选择。我正在寻找 np.random.choice()
的等价物。
import torch
pictures = torch.randint(0, 256, (1000, 28, 28, 3))
假设我想要其中的 10 张图片。
原文由 Nicolas Gervais 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于这种大小的张量:
N, D = 386363948, 2
k = 190973
values = torch.randn(N, D)
下面的代码工作得相当快。大约需要 0.2 秒:
indices = torch.tensor(random.sample(range(N), k))
indices = torch.tensor(indices)
sampled_values = values[indices]
然而,使用 torch.randperm
将花费超过 20 秒:
sampled_values = values[torch.randperm(N)[:k]]
原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
torch
没有np.random.choice()
的等效实现,请参阅 此处 的讨论。另一种方法是使用打乱的索引或随机整数进行索引。用 替换来做到这一点:
无需 更换即可做到:
阅读有关
torch.randint
和torch.randperm
的更多信息。第二个代码片段的灵感来自 PyTorch 论坛中的这篇 帖子。