我使用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]
据我所知,文档中提到这个方法只在每个epoch结束时调用,所以它不应该减慢on_batch_end
方法的速度。谁能提供一些关于这个问题是什么的信息吗?
回答:
这很可能是一个生成器(fit_generator()
)的问题。当使用生成器作为数据源时,必须在每个批次结束时调用它。建议重新检查你的生成器代码,使用多处理(workers > 1
)或增加批量大小(如果可能的话)。