【问题标题】:Keras - method on_batch_end is slow but only callback I have is checkpointKeras - 方法 on_batch_end 很慢,但我只有回调是检查点
【发布时间】:2018-03-07 21:06:58
【问题描述】:

我使用 TensorFlow 后端使用 keras 建立了一个网络。

当我训练我的网络时,我经常不断收到消息:

UserWarning: Method on_batch_end() is slow compared to the batch update (0.195523). Check your callbacks.
  % delta_t_median)

问题是我的网络只设置了检查点回调:

checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
callbacks_list = [checkpoint]

据我在文档中看到的,此方法仅在纪元结束时调用,因此它不会减慢on_batch_end 方法的速度。任何人都可以提供一些有关问题的信息吗?

【问题讨论】:

  • 你是否使用了一个生成器,它可能会注册一个隐式回调。
  • @briantyler,是的,我确实使用了生成器。它相当慢(正在交付从文件夹中随机选择的一批图像)。但是你是说生成器被注册为“批量结束”吗?
  • 我只是在推测,不过似乎有道理。
  • 解决办法是什么?
  • @IsaacSim 没有解决方案。该消息令人困惑,实际上它与生成器(正在挑选文件进行训练)比模型训练慢有关。我设法通过重写它稍微加快了速度 + 我开始使用更大的模型,每个批次的训练时间更长,所以消息消失了

标签: python tensorflow machine-learning callback keras


【解决方案1】:

这很可能是生成器 (fit_generator()) 问题。当使用生成器作为数据源时,必须在批处理结束时调用它。考虑重新访问您的生成器代码,使用多处理 (workers > 1) 或更高的批量大小(如果可能)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2012-05-10
    • 2021-12-13
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多