我有一组图片张量,想从中随机选择。我在寻找类似于np.random.choice()
的功能。
import torch
pictures = torch.randint(0, 256, (1000, 28, 28, 3))
假设我想选择其中的10张图片。
回答:
torch
没有类似于np.random.choice()
的实现,详见这里的讨论。替代方法是使用打乱的索引或随机整数进行索引。
有放回地进行选择:
- 生成n个随机索引
- 用这些索引访问原始张量
pictures[torch.randint(len(pictures), (10,))]
无放回地进行选择:
- 打乱索引
- 取前n个元素
indices = torch.randperm(len(pictures))[:10]
pictures[indices]
了解更多关于torch.randint
和torch.randperm
的信息。第二个代码片段的灵感来自于PyTorch论坛的这个帖子。