TensorFlow图像加载指南在Google Colab中无法正常运行,无法统计到图片数量
TensorFlow图像加载指南在Google Colab中无法正常运行,无法统计到图片数量
别慌,我刚帮不少人解决过Colab里这个TensorFlow数据集加载的问题,咱们一步步来排查:
首先,你碰到的image_count为0的核心原因,大概率是自动解压的数据集没加载完成,或者Colab的文件系统缓存让你看不到真实的文件内容——和/root与/content的目录层级没关系,那个是正常的,tf.keras.utils.get_file默认就是把数据集存在/root/.keras/datasets/下面,和当前/content平级完全不影响读取。
接下来给你几个解决步骤,按顺序试:
第一步:先确认数据集文件夹里到底有没有内容
先运行这段代码,看看data_dir下面是不是真的有花分类的子文件夹(比如玫瑰、雏菊这些):
import os print(os.listdir(data_dir))
- 如果输出是空的,那肯定是解压失败了,直接跳到第二步重新手动下载解压;
- 如果输出有子文件夹,那再试试把
glob的路径改宽一点,比如先找所有文件data_dir.glob('**/*'),看看是不是图片后缀不是.jpg?不过flower_photos数据集都是.jpg,这个概率极低。
第二步:手动重新下载并解压数据集
自动解压有时候会因为Colab的网络波动或者后台进程问题失败,咱们手动来更靠谱:
# 先删掉可能损坏的旧文件/文件夹 !rm -rf /root/.keras/datasets/flower_photos* # 重新下载压缩包到临时目录,再解压到指定位置 dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz" !wget {dataset_url} -O /tmp/flower_photos.tgz !tar -xzf /tmp/flower_photos.tgz -C /root/.keras/datasets/ # 重新指定data_dir data_dir = pathlib.Path("/root/.keras/datasets/flower_photos")
然后再统计图片数量:
image_count = len(list(data_dir.glob('*/*.jpg'))) print(image_count)
正常来说这时候应该能输出3670左右的数字了。
备选方案:把数据集下载到当前/content目录
如果上面的方法还是有问题,不如把数据集直接下载到你当前的/content目录,这样在Colab左侧的文件浏览器里能直接看到,排查起来更方便:
# 下载到当前目录并解压 !wget https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz !tar -xzf flower_photos.tgz # 指向当前目录下的flower_photos data_dir = pathlib.Path("./flower_photos") # 统计图片 image_count = len(list(data_dir.glob('*/*.jpg'))) print(image_count)
额外小提示
Colab的左侧文件浏览器有时候不会自动刷新,如果你手动解压后看不到文件夹,记得点击浏览器顶部的刷新按钮(圆形箭头图标),就能看到新的文件了。要是还不放心,你可以直接在左侧文件浏览器里导航到/root/.keras/datasets/flower_photos,肉眼看看里面有没有内容——直观又准确!




