如何使用tensorflow_dataset加载本地下载的CelebA数据集
手动导入CelebA数据集到tensorflow_datasets的解决方法
- 第一步:核对原始文件名称
你手动下载的CelebA数据集原始文件不能重命名,必须和tensorflow_datasets约定的文件名完全一致,核心文件包括img_align_celeba.zip、list_attr_celeba.txt、list_landmarks_align_celeba.txt、list_eval_partition.txt。如果你下载的是打包好的celeb_a压缩包,先把上述原始文件从压缩包中解压出来,不要修改文件名。 - 第二步:调整目录结构
在你指定的data_dir路径C:/Users/name下,创建二级目录downloads/manual,将所有核对好文件名的CelebA原始文件全部放入该目录,最终文件路径格式为C:/Users/name/downloads/manual/[所有CelebA原始文件]。 - 第三步:执行本地构建加载
不要直接调用tfds.load,先构建数据集实例执行本地格式转换,该过程只会读取本地文件不会触发线上下载,不会触发配额限制,参考代码如下:
import tensorflow_datasets as tfds # 构造CelebA数据集实例,指定数据根目录 # 若使用4.x以上版本tfds,导入路径替换为tfds.datasets.celeb_a.CelebA builder = tfds.image.CelebA(data_dir=r'C:\Users\name') # 执行本地构建,仅读取manual目录下的原始文件做格式转换 builder.download_and_prepare(download_config=tfds.download.DownloadConfig( manual_dir=r'C:\Users\name\downloads\manual' )) # 构建完成后加载对应拆分的数据集 ds = builder.as_dataset(split='train')
如果执行无报错,后续也可以直接用tfds.load("celeb_a", data_dir=r'C:\Users\name', split='train', download=False)加载已经构建好的数据集。
报错原因说明:之前的操作直接将压缩包放在data_dir根目录,不符合tfds约定的原始文件读取路径,因此会被判定为未找到本地数据,提示需要下载。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

