在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
相关产品推荐
相关产品推荐

