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

使用Keras DataGenerator训练时单epoch耗时过长问题求助

训练耗时过长的原因及解决方案
  • 核心原因:未指定steps_per_epoch和validation_steps参数
    使用zip包装生成器后,Keras无法自动识别单个epoch的迭代次数,会无限循环读取生成器的数据,你看到的日志中1557/Unknown就是这个原因,实际迭代次数远超过数据集对应的合理步数。需要先计算训练集和验证集的总样本数,手动设置参数:
    # 读取生成器内置的样本总数
    train_count = len(train_image_generator.filenames)
    val_count = len(validation_image_generator.filenames)
    history = model.fit(train_generator,
                      epochs = EPOCHS,
                      validation_data = val_generator,
                      verbose=1,
                      steps_per_epoch = train_count // BATCH_SIZE,
                      validation_steps = val_count // BATCH_SIZE,
                      callbacks=callbacks)
    
  • 数据加载IO瓶颈
    ImageDataGenerator的所有数据加载、增强操作都在CPU执行,如果你是把数据集挂载在云盘读取,云盘的IO延迟会大幅拉长单步耗时。建议把数据集先解压到运行环境的本地临时磁盘,减少IO耗时。
  • 未使用GPU加速
    请确认运行时已经切换到GPU模式,用CPU跑语义分割任务本身就会比GPU慢数十倍以上。
  • 冗余参数冲突
    用生成器训练时,model.fit里的batch_size参数无效,批次大小由flow_from_directory中配置的BATCH_SIZE决定,多余的参数虽然不会导致严重变慢,但可以移除避免逻辑混淆。
  • 第三方回调拖慢速度
    WandbCallback默认会实时同步训练数据到远端,网络不佳时会增加单步耗时,你可以先注释该回调测试训练速度,确认是否是该因素导致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 07:27:02