使用TFDS加载LSUN-Bedroom子集时磁盘空间不足的解决方案咨询
解决TFDS加载LSUN-Bedroom部分数据时磁盘空间不足的问题
我之前也碰到过一模一样的坑——TFDS默认逻辑是先下载完整的数据集,再根据你指定的split筛选子集,所以哪怕你只想要10%的数据,它还是会尝试把42.7GB的整个LSUN-Bedroom都拉到Colab本地磁盘,自然就触发空间不足的报错了。这里有几个实用的解决方案:
1. 提前指定Split,只下载需要的部分
别直接用tfds.load,先通过数据集构建器(tfds.builder)明确告诉TFDS只下载你需要的split片段,这样就不会触发全量下载了:
import tensorflow_datasets as tfds # 初始化LSUN-Bedroom的数据集构建器 builder = tfds.builder('lsun/bedroom') # 只下载并预处理训练集的10%(要是需要后90%就换成train[10%:]) builder.download_and_prepare(split='train[:10%]') # 加载指定好的子集 ds = builder.as_dataset(split='train[:10%]')
这个操作会让TFDS只下载对应比例的数据,不会碰剩下的90%,能直接把磁盘占用降到原来的1/10。
2. 用TFDS的GCS镜像直接读取(Colab环境首推)
Colab可以直接访问TensorFlow Datasets在Google Cloud Storage(GCS)上的预存镜像,LSUN-Bedroom刚好在这个镜像库里。你只需要在tfds.load里加个try_gcs=True参数,就能直接读取云端的数据集,完全不用下载到本地:
import tensorflow_datasets as tfds # 直接从GCS加载10%训练集,本地零下载、零占用 ds = tfds.load('lsun/bedroom', split='train[:10%]', try_gcs=True)
这个方法是Colab里最省心的,既不用等漫长的下载,也不会占本地磁盘空间,跑起来速度还更快。
额外小提示
如果之前已经尝试过下载,记得清理Colab里的TFDS缓存文件,路径一般是~/tensorflow_datasets/,用这条命令就能删除LSUN相关的缓存:
!rm -rf ~/tensorflow_datasets/lsun/
避免残留文件占用空间,影响后续操作。
内容的提问来源于stack exchange,提问作者krenerd
相关产品推荐
相关产品推荐

