在 pytorch 中创建数据集时如何关闭某些类?
Posted
技术标签:
【中文标题】在 pytorch 中创建数据集时如何关闭某些类?【英文标题】:How can I dismiss some classes when creating dataset in pytorch? 【发布时间】:2020-04-05 04:26:24 【问题描述】:这是我第一次使用 PyTorch。我将存储库克隆到 google colab。我想关闭存储库中的一些类(图像文件夹)(比如说文件夹 cat)。我怎样才能做到这一点?我不想简单地从目录中删除该类。
dataaddress = 'blah/blah' # address where all the classes resides
train_dataset = torchvision.datasets.ImageFolder(dataaddress, transform=train_transform)
test_dataset = torchvision.datasets.ImageFolder(dataaddress, transform=eval_transform)
train_indexes = [idx for idx in range(len(train_dataset)) if idx % 5]
test_indexes = [idx for idx in range(len(test_dataset)) if not idx % 5]
train_dataset = Subset(train_dataset, train_indexes)
test_dataset = Subset(test_dataset, test_indexes)
【问题讨论】:
您找到解决方案了吗? @krivar 我贴出来了 【参考方案1】:这里是示例代码
filep= os.path.join(root, splitp)
with open(filep, 'r') as splitfile:
for line in splitfile:
textlabel=line.split('/')[0].rstrip()
if textlabel != 'BACKGROUND_Google':
self.labels.append(textlabel)
self.labels_idx.append(class_to_idx[textlabel])
self.images.append(pil_loader(os.path.join(root, line.rstrip())))
【讨论】:
您能解释一下这段代码的作用以及它是如何解决问题的吗? 所以在根目录下有两个文本文件“train.txt”和“test.txt”,用于拆分数据,结构如下:accordion/image_0001.jpg planes/image_0150 .jpg上面的“filep”是这些文件的路径,“splitp”是一个参数,取值为“train”或“test”。休息正在读取这些文件并丢弃“BACKGROUND_Google” 如果您在答案本身中包含可以正确格式化代码等的解释,将会更有帮助。以上是关于在 pytorch 中创建数据集时如何关闭某些类?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Dataloader 类之外的 pytorch 中创建数据预处理管道?
在 bigquery 中创建数据集时,谷歌 App 引擎出错