在 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 引擎出错

找不到自定义程序集时如何立即关闭/关闭 Excel VSTO 工作簿

在 pytorch 中创建自定义梯度下降

如何在 Java 中创建链表数据结构? [关闭]

Swift:如何在应用程序中创建核心数据实体 [关闭]