pytorch - 数据集标记为未找到或损坏,但数据集未损坏
问题描述
我一直在尝试使用这个 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'] 更改为实际路径,但这仍然不起作用。有什么想法我能做什么?
解决方案
我的 pytorch 版本是 1.6.0。
我遇到了两个问题。以下是我的解决方案。这不是官方的,但对我有用。希望下一个 pytorch 版本会更新它。
- 问题:未找到或损坏数据集。
当我在 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
celeba.py 下载数据集,如果您选择 download=True 但这两个文件已损坏“list_landmarks_align_celeba.txt”和“list_attr_celeba.txt”
您需要找到某个地方,下载并替换它们
希望这些解决方案对您有所帮助!!!!
推荐阅读
- java - 程序不连续运行
- swift - 无法访问 UITableViewCell 的标题或标签
- angular - 使用带有errors.validation的验证器时出错
- javascript - 如何将包装在IIFE中的JS文件导入TS
- java - 从第三方战争依赖中删除 jar 文件
- javascript - 如何在 jquery rails 中读取文件
- ios - 从 iOS 应用扩展发出网络请求返回错误:“找不到具有指定主机名的服务器”
- java - Apache Lucene Query 遍历所有查询/术语
- flutter - BlocListener 不会在状态更改时构建小部件
- java - 为什么循环中的“中断”不起作用