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

如何在Google Colab中用GPU加速Keras猫狗分类CNN训练?

解决Colab中Keras CNN训练GPU加速无效的问题

核心问题拆解

你的训练慢并非GPU未生效,而是数据读取瓶颈、训练参数设置错误和不必要的GPU手动绑定导致的,以下是具体解决方案:


1. 优先解决Drive数据读取瓶颈(最关键)

直接从Google Drive读取数据集速度极慢,IO延迟会拖垮GPU利用率,建议先把数据集复制到Colab本地存储:

# 复制数据集到Colab本地磁盘(速度快很多)
!cp -r "/content/drive/MyDrive/Colab Notebooks/files/dataset_CNN" "/content/"

# 修改路径为本地路径
training_set = train_datagen.flow_from_directory('/content/dataset_CNN/training_set',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'binary')

test_set = test_datagen.flow_from_directory('/content/dataset_CNN/test_set',
                                            target_size = (64, 64),
                                            batch_size = 32,
                                            class_mode = 'binary')

训练完成后若需保存模型,再复制回Drive即可。

2. 修正离谱的训练步数参数

你设置的steps_per_epoch=8000和validation_steps=2000完全错误:

  • 猫狗数据集训练集通常是8000张,batch_size=32的话,steps_per_epoch应该是8000//32=250
  • 测试集2000张,validation_steps应该是2000//32=63

之前的设置意味着每个epoch要重复遍历数据集32次,纯纯浪费时间,修改后代码:

classifier.fit(training_set,
               steps_per_epoch = 250,  # 8000/32=250,匹配真实样本数
               epochs = 25,
               validation_data = test_set,
               validation_steps = 63)  # 2000/32≈63

3. 删掉无用的GPU绑定代码

TensorFlow 2.x和Keras会自动检测并优先使用GPU,手动with tf.device('/device:GPU:0')不仅没用,还可能导致数据生成器(CPU运行)和模型(GPU运行)之间的传输效率下降,直接移除这段代码即可。

4. 额外加速技巧

  • 增大batch_size:如果GPU内存够,把batch_size改成64/128,能提升GPU利用率
  • 开启混合精度训练:Colab的GPU支持混合精度,不损失精度的前提下加速训练:
    from tensorflow.keras.mixed_precision import set_global_policy
    set_global_policy('mixed_float16')
    
  • 检查GPU状态:用!nvidia-smi命令查看GPU利用率,确认模型是否真的在GPU上运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:25:24