You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Colab中使用ImageDataGenerator.flow_from_directory调用数据集的问题

在Colab中让ImageDataGenerator访问Google Drive数据集的解决方案

我经常在Colab里开发CNN项目,这个问题我太熟悉了!要让ImageDataGenerator.flow_from_directory顺利调用你Drive里的数据集,核心步骤是先把Google Drive挂载到Colab的运行环境,再正确指定数据集路径。下面是详细操作指南:

1. 挂载Google Drive到Colab运行环境

首先需要把你的Google Drive挂载到Colab的虚拟机器里,这样Colab才能访问Drive里的文件。运行以下代码:

from google.colab import drive
drive.mount('/content/drive')

执行后会弹出一个授权链接,点击链接登录你的Google账号,复制生成的验证码,粘贴到Colab的输入框里,回车就能完成挂载。

2. 确认你的数据集目录结构

flow_from_directory对目录结构有硬性要求,否则会报错。根据你的描述,你的目录应该是这样的(必须保证每个类别有独立子文件夹):

MyDrive/App/dataset/
├── train/
│   ├── category_1/  # 比如"cat"类别
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   └── category_2/  # 比如"dog"类别
│       ├── img1.jpg
│       └── ...
└── test/
    ├── category_1/
    └── category_2/

如果你的目录不是这种结构,flow_from_directory无法自动识别类别,需要先调整。

3. 正确调用flow_from_directory并指定路径

挂载完成后,Drive里的文件路径前缀是/content/drive/MyDrive/,所以你可以直接用这个前缀拼接你的数据集路径。示例代码如下:

from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 初始化ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)

# 加载训练集
train_generator = train_datagen.flow_from_directory(
    '/content/drive/MyDrive/App/dataset/train',  # 训练集路径
    target_size=(150, 150),  # 调整图片尺寸
    batch_size=32,
    class_mode='binary'  # 根据你的任务选择,多分类用'categorical'
)

# 加载测试集
test_generator = test_datagen.flow_from_directory(
    '/content/drive/MyDrive/App/dataset/test',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary'
)

4. 常见问题排查

  • 路径拼写错误:Colab的路径是区分大小写的,比如你的文件夹叫App就不能写成app,一定要和Drive里的文件夹名称完全一致。
  • 目录结构不符合要求:如果直接把所有图片放在train文件夹下,没有按类别分文件夹,flow_from_directory会报错,必须调整为每个类别一个子文件夹的结构。
  • 权限问题:确保你挂载的Google账号有权限访问App文件夹,如果是共享文件夹,要确认已经接受共享邀请。

内容的提问来源于stack exchange,提问作者Hamza Mehboob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:22:12