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

TensorFlow人脸情绪识别Callback未终止训练问题求助

问题排查与解决:TensorFlow回调未终止训练

嘿,我帮你找到了问题的根源!你的代码逻辑基本没问题,但有个非常容易忽略的拼写错误,导致模型没法在准确率达标时停止训练。

核心问题:拼写错误的回调属性

在你定义的myCallback类的on_epoch_end方法里,有一行代码写错了:

self.model.stop_traning = True

这里的stop_traning应该是stop_training(注意是training,不是traning,少了一个字母i)。TensorFlow的模型回调依赖stop_training这个内置属性来触发训练终止,拼写错误后,这个属性不会被正确识别,所以哪怕你打印了提示信息,模型也不会执行停止操作。

修正后的Callback类

把拼写错误改过来就可以了,同时可以优化一下提示信息,方便你直观看到当前准确率:

class myCallback(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):  # 这里参数名规范为epoch(单数),不影响功能但更贴合TensorFlow签名
        current_acc = logs.get('accuracy')
        if current_acc > DESIRED_ACCURACY:
            print(f'\n当前准确率达到{current_acc:.4f},超过目标值{DESIRED_ACCURACY},终止训练!')
            self.model.stop_training = True  # 修正拼写错误

额外的小提示

  • 可以在判断时打印当前准确率,方便你调试过程中实时观察训练进度。
  • 你的模型结构、数据生成器配置以及训练流程都是正确的,修正拼写问题后就能正常触发终止逻辑了。

验证效果

修正后,当训练过程中准确率超过0.999时,模型会立即停止训练,同时输出预设的提示信息,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:47:29