python - 如何在 pytorch MNIST 数据集中选择特定标签
问题描述
我正在尝试仅使用 PyTorch Mnist 数据集中的特定数字创建数据加载器
我已经尝试创建自己的采样器,但它不起作用,我不确定我是否正确使用了面具。
class YourSampler(torch.utils.data.sampler.Sampler):
def __init__(self, mask):
self.mask = mask
def __iter__(self):
return (self.indices[i] for i in torch.nonzero(self.mask))
def __len__(self):
return len(self.mask)
mnist = datasets.MNIST(root=dataroot, train=True, download=True, transform = transform)
mask = [True if mnist[i][1] == 5 else False for i in range(len(mnist))]
mask = torch.tensor(mask)
sampler = YourSampler(mask)
trainloader = torch.utils.data.DataLoader(mnist, batch_size=4, sampler = sampler, shuffle=False, num_workers=2)
到目前为止,我遇到了许多不同类型的错误。对于这个实现,它是“停止迭代”。我觉得这很容易/愚蠢,但我找不到简单的方法来做到这一点。谢谢您的帮助!
解决方案
我能想到的最简单的选择是就地减少数据集:
indices = dataset.targets == 5 # if you want to keep images with the label 5
dataset.data, dataset.targets = dataset.data[indices], dataset.targets[indices]
推荐阅读
- r - 一个滑块可使用 plotly 控制 R 中单个子图中的图形
- xcode - ResearchKit.framework 错误:找不到图像
- java - 在单元测试中使用应用程序类作为实用程序
- mongodb - 如何使用 MongoDB 4.2.1 的 mongoexport 选择子文档字段
- java - 单元测试抛出默认管理员用户名不可用错误
- r - 绘制直方图时如何在闪亮的应用程序中修复“找不到对象'mydata'”
- sql-server - 从另一个表更新表值
- windows - FFMPEG管道从Windows上的命令行输入文件名
- java - 无法从 Runnable 更新图像 - Android
- swiftui - SwiftUI 中的列表视图抖动