首页 > 解决方案 > 数据集标记为未找到或损坏,但数据集未损坏

问题描述

我一直在尝试使用这个 Github ( https://github.com/AntixK/PyTorch-VAE ) 并使用列出的配置文件调用 CelebA 数据集。特别是在 vae.yaml 下,我将解压缩文件的路径放置在我的计算机上下载 celeba 数据集 ( https://www.kaggle.com/jessicali9530/celeba-dataset ) 的位置。每次我运行程序时,我都会不断收到这些错误:

文件“/usr/local/lib/python3.6/dist-packages/torchvision/datasets/celeba.py”,第 67 行,init '您可以使用 download=True 下载它') RuntimeError: Dataset not found 或损坏. 您可以使用 download=True 下载它 AttributeError: 'VAEXperiment' object has no attribute '_lazy_train_dataloader'

我试图下载数据集,但没有任何变化。所以我不知道为什么程序没有运行。run.py 调用实验.py,它使用这个数据加载器来检索信息:

def train_dataloader(self):
        transform = self.data_transforms()

        if self.params['dataset'] == 'celeba':
            dataset = CelebA(root = self.params['data_path'],
                             split = "train",
                             transform=transform,
                             download=False)
        else:
            raise ValueError('Undefined dataset type')

        self.num_train_imgs = len(dataset)
        return DataLoader(dataset,
                          batch_size= self.params['batch_size'],
                          shuffle = True,
                          drop_last=True)

配置文件获取根上传递的信息。所以我所做的是将一些文件上传到 google colab(一些 .jpg 文件),当我运行 GItHub 中所述的命令 python run.py -c config/vae.yaml 时,它指出未找到数据集或腐败的。我已经在我的 linux 机器上尝试过这个并且发生了同样的错误,即使我使用了下载和解压缩的链接。我进一步尝试将 self.params['data_path'] 更改为实际路径,但这仍然不起作用。有什么想法我能做什么?

标签: pytorchdatasetgoogle-colaboratory

解决方案


我的 pytorch 版本是 1.6.0。
我遇到了两个问题。以下是我的解决方案。这不是官方的,但对我有用。希望下一个 pytorch 版本会更新它。

  1. 问题:未找到或损坏数据集。

当我在 pytorch 库中检查文件 celeba.py 时。我发现这一行:

if ext not in [".zip", ".7z"] and not check_integrity(fpath, md5):
   return False

这部分将使 self._check_integrity() 返回 False 并且程序提供我们得到的消息错误。

解决:您可以通过在此行前面添加“if False”来忽略这部分

if False:
   if ext not in [".zip", ".7z"] and not check_integrity(fpath, md5):
      return False
  1. celeba.py 下载数据集,如果您选择 download=True 但这两个文件已损坏“list_landmarks_align_celeba.txt”和“list_attr_celeba.txt”

    您需要找到某个地方,下载并替换它们

希望这些解决方案对您有所帮助!!!!


推荐阅读