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

如何在Google Colab训练CNN前预加载PlantVillage数据集至GPU?

可行,给你几个实操方案

1. 提前完成数据预加载与缓存

用TensorFlow的数据集工具把数据提前加载并缓存,避免训练时首次加载拖慢速度:

  • 先加载数据集并搭建预处理流水线(这部分不计时):
    import tensorflow as tf
    from tensorflow.keras.utils import image_dataset_from_directory
    
    # 从云端硬盘加载PlantVillage子集
    train_ds = image_dataset_from_directory(
        '/content/drive/MyDrive/PlantVillage_subset',
        image_size=(224, 224),
        batch_size=32
    )
    
    # 添加缓存和预取,让数据加载流水线更高效
    train_ds = train_ds.cache()  # 小数据集直接缓存到内存,大数据集可指定磁盘路径
    train_ds = train_ds.prefetch(tf.data.AUTOTUNE)
    
  • 手动遍历一次数据集,触发首次数据加载(这部分也不计时):
    # 跑一遍数据集,把数据提前加载到缓存/GPU,后续训练直接用缓存
    for _ in train_ds:
        pass
    

2. 单独给训练代码计时

完成上面的预加载后,只把模型训练的代码用%%time包裹,这样计时就不会包含数据加载的耗时:

%%time
# 这里放你的模型定义和训练代码
model = tf.keras.Sequential([
    # 你的CNN层定义
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_ds, epochs=10)

额外优化提示

如果数据集太大内存装不下,把cache()改成cache('/content/temp_cache'),用磁盘缓存代替内存缓存,虽然速度比内存稍慢,但远快于每次从云端硬盘读取。prefetch能让CPU在GPU处理当前批次时提前准备下一批数据,进一步提升训练效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:01