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

TensorFlow1.15+Keras2.2.5中on_batch_end/on_train_batch_end不触发求助

解决方案

1. 适配版本修正回调方法命名

在Keras 2.2.5版本中,on_train_batch_end并非官方支持的回调方法(该方法为后续版本新增),训练批次结束时触发的是on_batch_end,需在方法内判断当前是否处于训练阶段:

修改后的回调代码:

class CustomCallback(keras.callbacks.Callback):
    def on_train_begin(self, logs=None):
        print("on_train_begin")
    
    def on_batch_end(self, batch, logs=None):
        # 判断当前是否为训练阶段
        if self.model._is_training:
            print("on_train_batch_end (训练批次结束)")
        else:
            print("on_batch_end (验证批次结束)")

2. 检查训练调用的参数配置

如果使用fit或fit_generator训练,需确保参数设置正确:

  • 使用fit时,确认batch_size设置合理,输入数据能被正确分割为批次
  • 使用fit_generator时,确保生成器可持续输出数据,且steps_per_epoch值大于0

3. 确认回调已正确传入训练函数

调用model.fit()或model.fit_generator()时,必须将自定义回调加入callbacks参数列表:

model.fit(
    x_train, y_train,
    batch_size=32,
    epochs=5,
    callbacks=[CustomCallback()]
)

版本特性补充说明

在TensorFlow 1.15 + Keras 2.2.5的组合中,回调触发逻辑有明确版本特性:

  • on_train_begin:训练启动时正常触发
  • on_batch_end:所有批次(训练/验证)结束时都会触发,需通过self.model._is_training区分阶段
  • 该版本暂未引入on_train_batch_end、on_val_batch_end这类细分批次的回调方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:45:29